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


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 相关文章推荐
防止页面被iframe(兼容IE,Firefox火狐)
Jul 04 Javascript
javascript结合canvas实现图片旋转效果
May 03 Javascript
jquery中trigger()无法触发hover事件的解决方法
May 07 Javascript
详解Javascript ES6中的箭头函数(Arrow Functions)
Aug 24 Javascript
Bootstrap表单控件使用方法详解
Jan 11 Javascript
angularJs中datatable实现代码
Jun 03 Javascript
BootStrap Table实现server分页序号连续显示功能(当前页从上一页的结束序号开始)
Sep 12 Javascript
三种Webpack打包方式(小结)
Sep 19 Javascript
es6 super关键字的理解与应用实例分析
Feb 15 Javascript
vue在线动态切换主题色方案
Mar 26 Javascript
vue使用自定义事件的表单输入组件用法详解【日期组件与货币组件】
Jun 01 Javascript
Vue的自定义组件不能使用click方法的解决
Jul 28 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中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP实现图片裁剪、添加水印效果代码
2014/10/01 PHP
PHP中使用匿名函数操作数据库的例子
2014/11/17 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
joomla组件开发入门教程
2016/05/04 PHP
利用PHP如何写APP接口详解
2016/08/23 PHP
JavaScript 无符号右移运算符
2009/04/17 Javascript
nodejs 后缀名判断限制代码
2011/03/31 NodeJs
js使浏览器窗口最大化实现代码(适用于IE)
2013/08/07 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
jQuery读取XML文件内容的方法
2015/03/09 Javascript
JavaScript使用正则表达式获取全部分组内容的方法示例
2017/01/17 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
通过npm或yarn自动生成vue组件的方法示例
2019/02/12 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
[03:18]DOTA2放量测试专访820:希望玩家加入国服大家庭
2013/08/25 DOTA
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
跟老齐学Python之画圈还不简单吗?
2014/09/20 Python
Python使用剪切板的方法
2017/06/06 Python
Python GUI编程完整示例
2019/04/04 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Django REST 异常处理详解
2020/07/15 Python
介绍CSS3使用技巧5个
2009/04/02 HTML / CSS
CSS 说明横向进度条最后显示文字的实现代码
2020/11/10 HTML / CSS
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
会计实习生工作总结的自我评价
2013/10/07 职场文书
函授毕业自我鉴定
2013/12/19 职场文书
宗教学大学生职业生涯规划范文
2014/02/08 职场文书
综合内勤岗位职责
2014/04/14 职场文书
学校课外活动总结
2014/05/08 职场文书
团队精神口号
2014/06/06 职场文书
舞蹈教育学专业求职信
2014/06/29 职场文书
行政主管岗位职责
2015/02/03 职场文书
项目经理助理岗位职责
2015/04/13 职场文书
2016年“六一儿童节”校园广播稿
2015/12/17 职场文书