# weapp-cookie
> 一行代码让微信、头条、百度、支付宝小程序支持 cookie
![weapp-cookie](./assets/weapp-cookie.png)
# Intro
小程序原生的 request 网络请求接口并不支持传统的 Cookie,但有时候我们现有的后端接口确于依赖 Cookie(比如服务器用户登录态),这个库可用一行代码为你的小程序实现 Cookie 机制,以保证基于 cookie 的服务会话不会失效,与 web 端共用会话机制
# Featrues
- [x] 一行代码让小程序支持 cookie
- [x] 可使用 api 获取、设置 cookie
- [x] 支持 domain/path 作用域
# Install
``` sh
npm install weapp-cookie --save
# 将 npm 包复制到 vendor 文件夹,避免小程序可能不能找到文件(tips:使用 wepy/mpvue 等框架无需此步)
cp -rf ./node_modules/ ./vendor/
```
# Usage
以微信小程序为例,在小程序根目录的 app.js 一行代码引入即可
``` js
// app.js
import './vendor/weapp-cookie/dist/weapp-cookie'
// tips: 使用 wepy/mpvue 可以直接在入口 js 引入 weapp-cookie 模块
// import 'weapp-cookie'
App({
onLaunch: function () { }
// ...
})
```
原来的 wx.request 调用方式保持不变,引入后 weapp-cookie 会在底层自动代理 wx.request 的接口访问,以支持 cookie 存储和发送
``` js
// 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 调用
``` js
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
```
使用和配置别名:由于微信小程序的安全机制,[在小程序插件环境下 wx.request 不允许被重写](https://developers.weixin.qq.com/community/develop/doc/000cc0f0c70250ea51e6faa6156400),所以需使用内置别名或自定义别名来支持 cookie 请求
```
import cookies from 'weapp-cookie'
// 使用内置别名
wx.requestWithCookie({
url: 'https://example.com/user/current',
success: function (res) {
console.log(res)
}
})
// 配置自定义别名
cookies.config({ requestAlias: 'requestx' })
// 使用自定义别名
wx.requestx({
url: 'https://example.com/user/current',
success: function (res) {
console.log(res)
}
})
```
# Api
## CookieStore
``` js
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
``` js
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()
```
![star](https://user-gold-cdn.xitu.io/2018/7/24/164ca9c0e943dcd7?w=240&h=240&f=png&s=41877)
如果对你有用,欢迎 star ^_^
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计,大学生兼职信息平台,前端,后台管理系统,小程序和后台.zip (415个子文件)
.babelrc 402B
app.1b075eb7f8700ad2dd24037904dea357.css 263KB
bootstrap.min.css 118KB
iconfont.css 9KB
demo.css 8KB
media.css 7KB
reset.css 6KB
ptjob.css 6KB
navigationbar.css 5KB
zdialog.css 5KB
personal.css 5KB
reset.css 4KB
shijian.css 4KB
publisher.css 4KB
cropper.min.css 4KB
index.css 4KB
ImgCropping.css 3KB
news.css 3KB
common.css 3KB
release.css 2KB
pijob.css 2KB
notification.css 2KB
choice.css 2KB
login.css 2KB
register.css 1KB
abouts.css 1KB
start.css 558B
authentication.css 417B
editpersonal.css 290B
message.css 239B
Thumbs.db 4KB
.DS_Store 6KB
.editorconfig 147B
glyphicons-halflings-regular.eot 20KB
iconfont.eot 10KB
iconfont.184cc29.eot 10KB
.eslintrc 58B
.gitignore 213B
.gitkeep 0B
demo_index.html 18KB
personal.html 18KB
index.html 15KB
release.html 15KB
ptjob.html 14KB
authentication.html 11KB
publisher.html 11KB
choice.html 11KB
details.html 11KB
abouts.html 10KB
pijob.html 9KB
editpersonal.html 9KB
news.html 8KB
newsinform.html 8KB
newsdetail.html 8KB
enshrine.html 8KB
notification.html 7KB
workhistory.html 7KB
start2.html 6KB
head.html 5KB
index.html 5KB
retrieve.html 5KB
register.html 4KB
login.html 4KB
message.html 3KB
li.html 2KB
start1.html 1KB
index.html 524B
index.html 233B
favicon.ico 4KB
a2.jpg 2.02MB
timg3.jpg 1.79MB
timg7.jpg 274KB
timg5.jpg 246KB
a1.jpg 193KB
studentCard_201905110035155cd5a843af82a.jpg 143KB
studentCard_201905110051425cd5ac1ee4839.jpg 143KB
identity_201905110035155cd5a843aec35.jpg 96KB
identity_201905110000445cd5a02cb0332.jpg 96KB
identity_201905102344565cd59c78a9b36.jpg 96KB
identity_201905110051425cd5ac1ee3a91.jpg 96KB
guang1.jpg 92KB
tou.jpg 88KB
tou.jpg 88KB
tou.jpg 88KB
about.jpg 73KB
u1.jpg 71KB
u1.ad83c95.jpg 71KB
identity_201905110051425cd5ac1ee2e17.jpg 62KB
identity_201905110035155cd5a843aded4.jpg 62KB
identity_201905102344565cd59c78a3da6.jpg 62KB
identity_201905110000445cd5a02caf654.jpg 62KB
good2.jpg 51KB
con-bg.jpg 43KB
identity_201905110108445cd5b01c7ad67.jpg 39KB
identity_201905110108445cd5b01c7b9f4.jpg 39KB
messageImg_201905110106555cd5afaf018c4.jpg 39KB
studentCard_201905110108445cd5b01c7c5bd.jpg 39KB
industry_201905110000045cd5a0048812b.jpg 37KB
industry_201905110000445cd5a02cb0e31.jpg 37KB
industry_201905110000205cd5a014d9a88.jpg 37KB
共 415 条
- 1
- 2
- 3
- 4
- 5
资源评论
毕业小助手
- 粉丝: 2765
- 资源: 5583
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Java毕设项目:基于spring+mybatis+maven+mysql实现的医院住院管理系统【含源码+数据库+开题报告+毕业论文】
- 专业英语试卷解析,项目工程使用,包含答案
- Java毕设项目:基于spring+mybatis+maven+mysql实现的在线教育平台管理系统【含源码+数据库+开题报告+毕业论文】
- 001碳交易机制下考虑需求响应的优化运行Matlab代码.rar
- 002多时间尺度源储荷协调调度+日前日内实时+需求响应 Matlab代码.rar
- Java毕设项目:基于spring+mybatis+maven+mysql实现的旅游信息管理系统【含源码+数据库+毕业论文】
- 004CPLEX配电网重构单时段+多时段Matlab代码.rar
- 010电-气-热综合能源系统耦合调度、优化调度Matlab代码.rar
- 前端分析-2023071100789
- 011-考虑电动汽车可调度潜力的充电站两阶段市场投标策略 matlab代码.rar
- python电影数据分析
- 012-含碳捕集光伏出力面积 不能运行.rar
- 013基于混合整数规划的电池容量优化 不能运行.rar
- 019考虑阶梯式碳交易机制与电制氢的综合能源系统热电优化 不能运行.rar
- 前端分析-2023071100789
- 020基于多时间尺度滚动优化的多能源微网双层调度模型 matlab代码.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功