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


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 相关文章推荐
EasyUI 中 MenuButton 的使用方法
Jul 14 Javascript
jQuery学习笔记之jQuery原型属性和方法
Jun 09 Javascript
WordPress中利用AJAX异步获取评论用户头像的方法
Jan 08 Javascript
js拖拽的原型声明和用法总结
Apr 04 Javascript
微信小程序 页面传参实例详解
Nov 16 Javascript
Angularjs自定义指令实现三级联动 选择地理位置
Feb 13 Javascript
用Vue.extend构建消息提示组件的方法实例
Aug 08 Javascript
JavaScript实现图片本地预览功能【不用上传至服务器】
Sep 20 Javascript
利用vue和element-ui设置表格内容分页的实例
Mar 02 Javascript
Vue中computed与methods的区别详解
Mar 24 Javascript
在vue中使用v-bind:class的选项卡方法
Sep 27 Javascript
Layui 解决表格异步调用后台分页的问题
Oct 26 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.MVC的模板标签系统(五)
2006/09/05 PHP
深入php数据采集的详解
2013/06/02 PHP
php线性表的入栈与出栈实例分析
2015/06/12 PHP
浅析Yii2中GridView常见操作
2016/04/22 PHP
php微信公众号开发之关键词回复
2018/10/20 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
javascript 节点遍历函数
2010/03/28 Javascript
javascript preload&lazy load
2010/05/13 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
AngularJS指令用法详解
2016/11/02 Javascript
微信小程序实现锚点定位楼层跳跃的实例
2017/05/18 Javascript
JS时间控制实现动态效果的实例讲解
2017/07/31 Javascript
[00:43]DOTA2小紫本全民票选福利PA至宝全方位展示
2014/11/25 DOTA
[01:35:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第一场 1月18日
2021/03/11 DOTA
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
python中zip()方法应用实例分析
2016/04/16 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python实现爬虫设置代理IP和伪装成浏览器的方法分享
2018/05/07 Python
Python通过for循环理解迭代器和生成器实例详解
2019/02/16 Python
python中数据库like模糊查询方式
2020/03/02 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
基于HTML5 audio元素播放声音jQuery小插件
2011/05/11 HTML / CSS
美国现代家具和家居商店:Apt2B
2016/08/29 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
庆七一活动总结
2014/08/27 职场文书
幼儿园教师求职信
2015/03/20 职场文书
羊脂球读书笔记
2015/06/30 职场文书
公司行政管理制度范本
2015/08/05 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python
变长双向rnn的正确使用姿势教学
2021/05/31 Python
MyBatis自定义SQL拦截器示例详解
2021/10/24 Java/Android
JAVA springCloud项目搭建流程
2022/05/11 Java/Android
Redis Lua脚本实现ip限流示例
2022/07/15 Redis