線上服務(wù)咨詢
Article/文章
記錄成長點(diǎn)滴 分享您我感悟
微信小程序支持 cookie的代碼實(shí)現(xiàn)
本篇文章給大家?guī)淼膬?nèi)容是關(guān)于微信小程序支持 cookie的代碼實(shí)現(xiàn),有一定的參考價(jià)值,有需要的朋友可以參考一下,希望對(duì)你有所幫助。
weapp-cookie
一行代碼讓微信小程序支持 cookie,傳送門:github
Intro
微信原生的 wx.request 網(wǎng)絡(luò)請求接口并不支持傳統(tǒng)的 Cookie,但有時(shí)候我們現(xiàn)有的后端接口確于依賴 Cookie(比如服務(wù)器用戶登錄態(tài)),這個(gè)庫沈陽小程序制作
可用一行代碼為你的小程序實(shí)現(xiàn) Cookie 機(jī)制,以保證基于 cookie 的服務(wù)會(huì)話不會(huì)失效,與 web 端共用會(huì)話機(jī)制Featrues
一行代碼讓小程序支持 cookie
可使用 api 獲取、設(shè)置 cookie
支持 domain/path 作用域
Install
npm install weapp-cookie --save# 將 npm 包復(fù)制到 vendor 文件夾,避免小程序可能不能找到文件(tips:使用 wepy/mpvue 等框架無需此步)cp -rf ./node_modules/ ./vendor/
Usage
在小程序根目錄的 app.js 一行代碼引入即可
// app.jsimport './vendor/weapp-cookie/index'// tips: 使用 wepy/mpvue 可以直接在入口 js 引入 weapp-cookie 模塊// import 'weapp-cookie'App({ onLaunch: function () { } // ...})
原來的 wx.request 調(diào)用方式保持不變,引入后 weapp-cookie 會(huì)在底層自動(dòng)代理 wx.request 的接口訪問,以支持 cookie 存儲(chǔ)和發(fā)送
// pages/home/index.jsPage({ onLoad: function () { wx.request({ url: 'https://example.com/login', data: { username: 'admin', password: '123456' }, success: function (res) { /* * 接口調(diào)用成功后 weapp-cookie 會(huì)自動(dòng)保存后端發(fā)送的所有Cookie(比如:SessionID) * 并在后續(xù)的所有請求中帶上,以保證基于 cookie 的服務(wù)器會(huì)話機(jī)制不會(huì)失效, * 實(shí)現(xiàn)與 web 端共用會(huì)話機(jī)制(無需再手動(dòng)維護(hù) 3rd_session_key) */ } }) }})
cookie 操作可通過 api 調(diào)用
import cookies from 'weapp-cookie'// 獲取 cookielet token = cookies.get('csrf_token', 'example.com')// 設(shè)置 cookielet cookie = cookies.set('uid', 100, { domain: 'example.com' })// 刪除 cookielet isRemoved = cookies.remove('uid', 'example.com')// 判斷是否存在 cookielet 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)/*** 設(shè)置 cookie* @param {String} name cookie 名稱* @param {String} value cookie 值* @param {Object} options cookie 選項(xiàng)* @param {String} options.domain 設(shè)置域名* @param {String} [options.path] * @param {Date} [options.expires]* @param {Number} [options.maxAge]* @param {Boolean} [options.httpOnly]* @return {Cookie} cookie 對(duì)象*/cookies.set(String name, String value, Object options)/*** 是否存在某個(gè) 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 對(duì)象* @param {String} name cookie 名稱* @param {String} [domain] 指定域名(可選)* @return {Cookie} cookie 對(duì)象*/cookies.getCookie(String name, String domain)/*** 獲取 cookies JSON對(duì)象* @param {String} [domain] 指定域名(可選,不指定則獲取包含所有域名的 cookie 值對(duì)象)* @return {Object} cookie JSON對(duì)象*/cookies.getCookies(String domain)/*** 清除 cookie* @param {String} [domain] 指定域名(可選,不指定則清除所有域名 cookie)* @return {Boolean} 是否清除成功*/cookies.clearCookies (domain)/*** 獲取所有存儲(chǔ)的域名和 cookies 結(jié)構(gòu)* @return {Object} obj 結(jié)構(gòu)JSON對(duì)象*/cookies.dir(domain)javascript,cookie,小程序