热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

微信小程序支持cookie的代码实现

本篇文章给大家带来的内容是关于微信小程序支持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.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的代码实现的详细内容,更多请关注其它相关文章!


推荐阅读
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 尤洋:夸父AI系统——大规模并行训练的深度学习解决方案
    自从AlexNet等模型在计算机视觉领域取得突破以来,深度学习技术迅速发展。近年来,随着BERT等大型模型的广泛应用,AI模型的规模持续扩大,对硬件提出了更高的要求。本文介绍了新加坡国立大学尤洋教授团队开发的夸父AI系统,旨在解决大规模模型训练中的并行计算挑战。 ... [详细]
  • Git版本控制基础解析
    本文探讨了Git作为版本控制工具的基本概念及其重要性,不仅限于代码管理,还包括文件的历史记录与版本切换功能。通过对比Git与SVN,进一步阐述了分布式版本控制系统的独特优势。 ... [详细]
  • 本文深入探讨了微信小程序直播中点赞动画的实现方法,特别是如何利用三阶贝塞尔曲线使点赞图标沿预设路径移动,以及相关的数学计算与代码实现。 ... [详细]
  • 页面预渲染适用于主要包含静态内容的页面。对于依赖大量API调用的动态页面,建议采用SSR(服务器端渲染),如Nuxt等框架。更多优化策略可参见:https://github.com/HaoChuan9421/vue-cli3-optimization ... [详细]
  • STM32代码编写STM32端不需要写关于连接MQTT服务器的代码,连接的工作交给ESP8266来做,STM32只需要通过串口接收和发送数据,间接的与服务器交互。串口三配置串口一已 ... [详细]
  • ArcBlock 发布 ABT 节点 1.0.31 版本更新
    2020年11月9日,ArcBlock 区块链基础平台发布了 ABT 节点开发平台的1.0.31版本更新,此次更新带来了多项功能增强与性能优化。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 本文探讨了在不同场景下如何高效且安全地存储Token,包括使用定时器刷新、数据库存储等方法,并针对个人开发者与第三方服务平台的不同需求提供了具体建议。 ... [详细]
  • 本文详细介绍了在PHP中如何获取和处理HTTP头部信息,包括通过cURL获取请求头信息、使用header函数发送响应头以及获取客户端HTTP头部的方法。同时,还探讨了PHP中$_SERVER变量的使用,以获取客户端和服务器的相关信息。 ... [详细]
  • 本文旨在探讨Swift中的Closure与Objective-C中的Block之间的区别与联系,通过定义、使用方式以及外部变量捕获等方面的比较,帮助开发者更好地理解这两种机制的特点及应用场景。 ... [详细]
  • 深入理解iOS中的链式编程:以Masonry为例
    本文通过介绍Masonry这一轻量级布局框架,探讨链式编程在iOS开发中的应用。Masonry不仅简化了Auto Layout的使用,还提高了代码的可读性和维护性。 ... [详细]
  • 美团安全响应中心推出全新配送业务测试活动,带来双重福利,邀您共同参与! ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
author-avatar
wbklzh
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有