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


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阻止同类型事件小结
Apr 19 Javascript
jQuery+ajax实现鼠标单击修改内容的方法
Jun 27 Javascript
Node.js中使用计时器定时执行函数详解
Aug 15 Javascript
一个很有趣3D球状标签云兼容IE8
Aug 22 Javascript
JavaScript动态数量的文件上传控件
Nov 18 Javascript
详解前端自动化工具gulp自动添加版本号
Dec 20 Javascript
微信小程序分页加载的实例代码
Jul 11 Javascript
微信小程序App生命周期详解
Jan 31 Javascript
Express的HTTP重定向到HTTPS的方法
Jun 06 Javascript
全面解析vue router 基本使用(动态路由,嵌套路由)
Sep 02 Javascript
Vue唯一可以更改vuex实例中state数据状态的属性对象Mutation的讲解
Jan 18 Javascript
nuxt引入组件和公共样式的操作
Nov 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使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
javascript 短路法代码精简
2009/08/20 Javascript
动态加载外部javascript文件的函数代码分享
2011/07/28 Javascript
JavaScript中的数学运算介绍
2014/12/29 Javascript
Backbone.js中的集合详解
2015/01/14 Javascript
jQuery动画与特效详解
2015/02/01 Javascript
基于JavaScript实现动态创建表格和增加表格行数
2015/12/20 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
Angularjs之filter过滤器(推荐)
2016/11/27 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
原生js和css实现图片轮播效果
2017/02/07 Javascript
从零开始学习Node.js系列教程四:多页面实现的数学运算示例
2017/04/13 Javascript
Vue-cli创建项目从单页面到多页面的方法
2017/09/20 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
微信小程序3D轮播实现代码
2019/09/19 Javascript
十分钟教你上手ES2020新特性
2020/02/12 Javascript
详解JSON.stringify()的5个秘密特性
2020/05/26 Javascript
JS常见内存泄漏及解决方案解析
2020/05/30 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
python算法学习之桶排序算法实例(分块排序)
2013/12/18 Python
python利用拉链法实现字典方法示例
2017/03/25 Python
对python 判断数字是否小于0的方法详解
2019/01/26 Python
python绘图模块matplotlib示例详解
2019/07/26 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
js实现移动端H5页面手指滑动刻度尺功能
2017/11/16 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
东方通信股份有限公司VC面试题
2014/08/27 面试题
公司活动策划方案
2014/01/13 职场文书
实习生求职自荐信
2014/02/07 职场文书
小区物业门卫岗位职责
2014/04/10 职场文书
2014年话务员工作总结
2014/11/19 职场文书
2014年药剂科工作总结
2014/11/26 职场文书
pyqt5蒙版遮罩mask,setmask的使用
2021/06/11 Python