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


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 相关文章推荐
JS backgroundImage控制
May 19 Javascript
JavaScript 创建对象和构造类实现代码
Jul 30 Javascript
使用javascript为网页增加夜间模式
Jan 26 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
jquery读取xml文件实现省市县三级联动的方法
May 29 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
js如何打印object对象
Oct 16 Javascript
第七篇Bootstrap表单布局实例代码详解(三种表单布局)
Jun 21 Javascript
JS实现的集合去重,交集,并集,差集功能示例
Mar 13 Javascript
node.js博客项目开发手记
Mar 16 Javascript
Vue.js 2.x之组件的定义和注册图文详解
Jun 19 Javascript
Vue2.x-使用防抖以及节流的示例
Mar 02 Vue.js
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 COOKIE立即生效,不用刷新就可以使用
2011/03/09 PHP
PHP 等比例缩放图片详解及实例代码
2016/09/18 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
JS对img进行操作(换图片/切图/轮换/停止)
2013/04/17 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
前端分页功能的实现以及原理(jQuery)
2017/01/22 Javascript
COM组件中调用JavaScript函数详解及实例
2017/02/23 Javascript
vue自动化表单实例分析
2018/05/06 Javascript
vue中使用vee-validator完成表单校验方案
2019/11/01 Javascript
使用Element的InfiniteScroll 无限滚动组件报错的解决
2020/07/27 Javascript
Android分包MultiDex策略详解
2017/10/30 Python
python分治法求二维数组局部峰值方法
2018/04/03 Python
python+pandas+时间、日期以及时间序列处理方法
2018/07/10 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
Python跑循环时内存泄露的解决方法
2020/01/13 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
在tensorflow以及keras安装目录查询操作(windows下)
2020/06/19 Python
python FTP编程基础入门
2021/02/27 Python
如何使用html5与css3完成google涂鸦动画
2012/12/16 HTML / CSS
Foreo国际站:Foreo International
2018/10/29 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
公司合作协议书范本
2014/04/18 职场文书
护士长竞聘演讲稿
2014/04/30 职场文书
竞聘上岗演讲
2014/05/19 职场文书
体操比赛口号
2014/06/10 职场文书
暑期培训班招生方案
2014/08/26 职场文书
个人工作作风整改措施思想汇报
2014/10/13 职场文书
教师政风行风自查自纠报告
2014/10/21 职场文书
英语教师个人工作总结
2015/02/09 职场文书
2016中学教师读书心得体会
2016/01/13 职场文书
2019年大学生职业生涯规划书
2019/03/25 职场文书
分布式Redis Cluster集群搭建与Redis基本用法
2022/02/24 Redis