微信小程序 如何保持登录状态


Posted in Javascript onAugust 16, 2019

问题

由于wx.request()发起的每次请求对于服务器来说都是不同的会话(wx.request()请求是先经过微信服务器再到达我们的服务器),这样会导致后续请求都相当于未登录的状态。

解决方案

将登陆时后端返回的session保存在本地,

然后将session存放在cookie中以请求头的方式带回给服务端

实现代码

1.请求登陆接口获取到header["Set-Cookie"],并储存

//app.js
App({
 onLaunch() {
  wx.login({ // 登录
   // 发送 res.code 到后台换取 openId, sessionKey, unionId
   success: res => {
    wx.request({
     url: 'api/login',
     method: 'POST',
     data: {
      code: res.code
     },
     success(res) {
      //必须先清除,否则res.header['Set-Cookie']会报错
      wx.removeStorageSync('sessionid') ;
      //储存res.header['Set-Cookie']
      wx.setStorageSync("sessionid", res.header["Set-Cookie"]) ;
     }
    });
   }
  });
 }
})

2.后续接口将储存的sessionid放在cookie中以请求头的方式带回给服务端

//index.js
Page({
 onLoad(options) {
  wx.request({
   url: api + '/list',
   method: 'GET',
   header: { //将sessionid放在cookie中以请求头的方式带回给服务端
    'cookie': wx.getStorageSync("sessionid")
   },
   success(res) {
    console.log(res);
   }
  })
 }
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript function、指针及内置对象
Feb 19 Javascript
{}与function(){}选用空对象{}来存放keyValue
May 23 Javascript
css transform 3D幻灯片特效实现步骤解读
Mar 27 Javascript
js中array的sort()方法使用介绍
Feb 20 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
Jun 27 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
Mar 03 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
前端图片懒加载(lazyload)的实现方法(提高用户体验)
Aug 21 Javascript
在Vue中使用Echarts实例图的方法实例
Oct 10 Javascript
Ajax 的初步实现(使用vscode+node.js+express框架)
Jun 18 Javascript
JS事件流与事件处理程序实例分析
Aug 16 #Javascript
javascript事件监听与事件委托实例详解
Aug 16 #Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&平移轮播效果
Aug 16 #Javascript
详解Vue中组件传值的多重实现方式
Aug 16 #Javascript
详解vue+axios给开发环境和生产环境配置不同的接口地址
Aug 16 #Javascript
JavaScript JSON数据处理全集(小结)
Aug 15 #Javascript
JointJS JavaScript流程图绘制框架解析
Aug 15 #Javascript
You might like
聊天室php&mysql(一)
2006/10/09 PHP
dedecms模版制作使用方法
2007/04/03 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
php中单个数据库字段多列显示(单字段分页、横向输出)
2014/07/28 PHP
php简单统计字符串单词数量的方法
2015/06/19 PHP
PHP常用的排序和查找算法
2015/08/06 PHP
PHP sleep()函数, usleep()函数
2016/08/25 PHP
深入理解javascript学习笔记(一) 编写高质量代码
2012/08/09 Javascript
jQuery学习笔记(3)--用jquery(插件)实现多选项卡功能
2013/04/08 Javascript
jquery实现倒计时代码分享
2014/06/13 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
JS 实现banner图片轮播效果(鼠标事件)
2017/08/04 Javascript
webpack 4.0.0-beta.0版本新特性介绍
2018/02/10 Javascript
el-input 标签中密码的显示和隐藏功能的实例代码
2019/07/19 Javascript
微信小程序反编译的实现
2020/12/10 Javascript
[02:56]DOTA2矮人直升机 英雄基础教程
2013/11/26 DOTA
[04:15]DOTA2-DPC中国联赛 正赛 Ehome vs Aster 选手采访
2021/03/11 DOTA
python简单实例训练(21~30)
2017/11/15 Python
利用Python暴力破解zip文件口令的方法详解
2017/12/21 Python
Python中@property的理解和使用示例
2019/06/11 Python
Python 3 判断2个字典相同
2019/08/06 Python
python生成器推导式用法简单示例
2019/10/08 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
Solaris操作系统的线程机制
2012/12/23 面试题
物业经理求职自我评价
2013/09/22 职场文书
服务承诺书怎么写
2014/05/24 职场文书
市级青年文明号申报材料
2014/05/26 职场文书
安全宣传标语口号
2014/06/06 职场文书
小学网上祭英烈活动总结
2014/07/05 职场文书
合作合同协议书范本
2015/01/27 职场文书
答辩状格式范本
2015/05/22 职场文书
2016中秋晚会开幕词
2016/03/03 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
AJAX实现省市县三级联动效果
2021/10/16 Javascript
win10搭建配置ftp服务器的方法
2022/08/05 Servers