作者:wbklzh | 来源:互联网 | 2022-10-16 14:28
本篇文章给大家带来的内容是关于微信小程序支持 COOKIE的代码实现,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
weapp-COOKIE
一行代码让微信小程序支持 COOKIE,传送门:github
Intro
微信原生的 wx.request 网络请求接口并不支持传统的 COOKIE,但有时候我们现有的后端接口确于依赖 COOKIE(比如服务器用户登录态),这个库可用一行代码为你的小程序实现 COOKIE 机制,以保证基于 COOKIE 的服务会话不会失效,与 web 端共用会话机制
Featrues
一行代码让小程序支持 COOKIE
可使用 api 获取、设置 COOKIE
支持 domain/path 作用域
Install
npm install weapp-COOKIE --save
# 将 npm 包复制到 vendor 文件夹,避免小程序可能不能找到文件(tips:使用 wepy/mpvue 等框架无需此步)
cp -rf ./node_modules/ ./vendor/
Usage
在小程序根目录的 app.js 一行代码引入即可
// app.js
import './vendor/weapp-COOKIE/index'
// tips: 使用 wepy/mpvue 可以直接在入口 js 引入 weapp-COOKIE 模块
// import 'weapp-COOKIE'
App({
onLaunch: function () { }
// ...
})
原来的 wx.request 调用方式保持不变,引入后 weapp-COOKIE 会在底层自动代理 wx.request 的接口访问,以支持 COOKIE 存储和发送
// pages/home/index.js
Page({
onLoad: function () {
wx.request({
url: 'https://example.com/login',
data: {
username: 'admin',
password: '123456'
},
success: function (res) {
/*
* 接口调用成功后 weapp-COOKIE 会自动保存后端发送的所有COOKIE(比如:SessionID)
* 并在后续的所有请求中带上,以保证基于 COOKIE 的服务器会话机制不会失效,
* 实现与 web 端共用会话机制(无需再手动维护 3rd_session_key)
*/
}
})
}
})
COOKIE 操作可通过 api 调用
import COOKIEs from 'weapp-COOKIE'
// 获取 COOKIE
let token = COOKIEs.get('csrf_token', 'example.com')
// 设置 COOKIE
let COOKIE = COOKIEs.set('uid', 100, { domain: 'example.com' })
// 删除 COOKIE
let isRemoved = COOKIEs.remove('uid', 'example.com')
// 判断是否存在 COOKIE
let hasToken = COOKIEs.has('uid', 'example.com')
// ... 详情请参考 Api
Api
COOKIEStore
import COOKIEs from 'weapp-COOKIE'
/**
* 获取 COOKIE 值
* @param {String} name COOKIE 名称
* @param {String} [domain] 指定域名(可选)
* @return {String} COOKIE 值
*/
COOKIEs.get(String name, String domain)
/**
* 设置 COOKIE
* @param {String} name COOKIE 名称
* @param {String} value COOKIE 值
* @param {Object} options COOKIE 选项
* @param {String} options.domain 设置域名
* @param {String} [options.path]
* @param {Date} [options.expires]
* @param {Number} [options.maxAge]
* @param {Boolean} [options.httpOnly]
* @return {COOKIE} COOKIE 对象
*/
COOKIEs.set(String name, String value, Object options)
/**
* 是否存在某个 COOKIE
* @param {String} name COOKIE 名称
* @param {String} [domain] 指定域名(可选,不指定则任意域名包含名称为 name 的 cokkie 即为存在)
* @return {Boolean} 是否存在
*/
COOKIEs.has(String name, String domain)
/**
* 删除 COOKIE
* @param {Array} name COOKIE 键
* @param {String} [domain] 指定域名(可选,不指定则删除所有域名中名称为 name 的 COOKIE)
* @return {Boolean} 是否删除成功
*/
COOKIEs.remove(String name, String domain)
/**
* 获取 COOKIE 对象
* @param {String} name COOKIE 名称
* @param {String} [domain] 指定域名(可选)
* @return {COOKIE} COOKIE 对象
*/
COOKIEs.getCOOKIE(String name, String domain)
/**
* 获取 COOKIEs JSON对象
* @param {String} [domain] 指定域名(可选,不指定则获取包含所有域名的 COOKIE 值对象)
* @return {Object} COOKIE JSON对象
*/
COOKIEs.getCOOKIEs(String domain)
/**
* 清除 COOKIE
* @param {String} [domain] 指定域名(可选,不指定则清除所有域名 COOKIE)
* @return {Boolean} 是否清除成功
*/
COOKIEs.clearCOOKIEs (domain)
/**
* 获取所有存储的域名和 COOKIEs 结构
* @return {Object} obj 结构JSON对象
*/
COOKIEs.dir(domain)
COOKIE
import COOKIEs from 'weapp-COOKIE'
// 获取 COOKIE 对象
let COOKIE = COOKIEs.getCOOKIE('uuid', 'example.com')
// ===== COOKIE 属性 =====
COOKIE.name: String
COOKIE.value: String
COOKIE.domain: String
COOKIE.path: String
COOKIE.expires: Date
COOKIE.maxAge: Number
COOKIE.httpOnly: Boolean
// ===== COOKIE 方法 =====
/**
* 验证 COOKIE 是否过期
* @return {Boolean} 是否过期
*/
COOKIE.isExpired()
/**
* 验证 COOKIE 是否可持久化
* @return {Boolean} 是否可持久化
*/
COOKIE.isPersistence()
以上就是微信小程序支持 COOKIE的代码实现的详细内容,更多请关注其它相关文章!