線上服務咨詢
Article/文章
記錄成長點滴 分享您我感悟
微信小程序支持 cookie的代碼實現
本篇文章給大家帶來的內容是關于微信小程序支持 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.jsimport './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.jsPage({ 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'// 獲取 cookielet token = cookies.get('csrf_token', 'example.com')// 設置 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)/*** 設置 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)javascript,cookie,小程序