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


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 相关文章推荐
jquery 模式对话框终极版实现代码
Sep 28 Javascript
javascript中的括号()用法小结
Apr 14 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
jQuery实现的背景颜色渐变动画效果示例
Mar 24 jQuery
bootstrap-table组合表头的实现方法
Sep 07 Javascript
vue2.0在table中实现全选和反选的示例代码
Nov 04 Javascript
微信小程序利用canvas 绘制幸运大转盘功能
Jul 06 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
Sep 05 Javascript
了解javascript中的Dom操作
May 27 Javascript
vue cli 3.0通用打包配置代码,不分一二级目录
Sep 02 Javascript
vue中使用vue-pdf的方法详解
Sep 05 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 翻页 实例代码
2009/08/07 PHP
PHP中使用foreach()遍历二维数组的简单实例
2016/06/13 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
2019/11/23 PHP
Prototype使用指南之array.js
2007/01/10 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
javascript在网页中实现读取剪贴板粘贴截图功能
2014/06/07 Javascript
React复制到剪贴板的示例代码
2017/08/22 Javascript
vue 的keep-alive缓存功能的实现
2018/03/22 Javascript
angularjs下ng-repeat点击元素改变样式的实现方法
2018/09/12 Javascript
给localStorage设置一个过期时间的方法分享
2018/11/06 Javascript
mockjs+vue页面直接展示数据的方法
2018/12/19 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
解决Vue+Electron下Vuex的Dispatch没有效果问题
2019/05/20 Javascript
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
[01:01:52]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第二场 1月9日
2021/03/11 DOTA
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
使用实现XlsxWriter创建Excel文件并编辑
2018/05/04 Python
Pycharm在创建py文件时,自动添加文件头注释的实例
2018/05/07 Python
Python数据分析pandas模块用法实例详解
2019/11/20 Python
torch 中各种图像格式转换的实现方法
2019/12/26 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
美国顶级防滑鞋:Shoes For Crews
2017/03/27 全球购物
沙特阿拉伯排名第一的在线时尚购物应用程序:1Zillion
2020/08/08 全球购物
班班通项目实施方案
2014/02/25 职场文书
新年联欢会主持词
2014/03/27 职场文书
银行内勤岗位职责
2014/04/09 职场文书
小学生感恩父母演讲稿
2014/08/28 职场文书
群众路线自查自纠工作情况报告
2014/10/28 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
SpringDataJPA在Entity中常用的注解介绍
2021/12/06 Java/Android