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


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 相关文章推荐
javascript document.compatMode兼容性
Feb 23 Javascript
读jQuery之十四 (触发事件核心方法)
Aug 23 Javascript
JQuery each打印JS对象的方法
Nov 13 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
JS仿淘宝实现的简单滑动门效果代码
Oct 14 Javascript
js实现一个猜数字游戏
Mar 31 Javascript
vue-cli+webpack记事本项目创建
Apr 01 Javascript
详解Vue基于 Nuxt.js 实现服务端渲染(SSR)
Apr 05 Javascript
redux中间件之redux-thunk的具体使用
Apr 17 Javascript
Vue数据双向绑定原理及简单实现方法
May 18 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
Apr 15 Javascript
详解Vue.js中引入图片路径的几种方式
Jun 17 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/01/03 PHP
php获取是星期几的的一些常用姿势
2019/12/15 PHP
关于IFRAME 自适应高度的研究
2006/07/20 Javascript
Jquery Validation插件防止重复提交表单的解决方法
2010/03/05 Javascript
JavaScript中:表达式和语句的区别[译]
2012/09/17 Javascript
判断js对象是否拥有某一个属性的js代码
2013/08/16 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jquery中ajax处理跨域的三大方式
2016/01/05 Javascript
学习Javascript面向对象编程之封装
2016/02/23 Javascript
JS简单实现无缝滚动效果实例
2016/08/24 Javascript
原生js的RSA和AES加密解密算法
2016/10/08 Javascript
浅析使用BootStrap TreeView插件实现灵活配置快递模板
2016/11/28 Javascript
基于bootstrop常用类总结(推荐)
2017/09/11 Javascript
js断点调试经验分享
2017/12/08 Javascript
javascript变量提升和闭包理解
2018/03/12 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
python从入门到精通(DAY 3)
2015/12/20 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
numpy的文件存储.npy .npz 文件详解
2018/07/09 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
Python使用统计函数绘制简单图形实例代码
2019/05/15 Python
Python中 Global和Nonlocal的用法详解
2020/01/20 Python
python对文件的操作方法汇总
2020/02/28 Python
python中数字是否为可变类型
2020/07/08 Python
HTML5为输入框添加语音输入功能的实现方法
2017/02/06 HTML / CSS
压铸汽车模型收藏家:Diecastmodelswholesale.com
2016/12/21 全球购物
奥地利票务门户网站:oeticket.com
2019/12/31 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
教师个人的自我评价分享
2014/01/02 职场文书
工厂会计员职责
2014/02/06 职场文书
小组名称和口号
2014/06/09 职场文书
励志演讲稿600字
2014/08/21 职场文书
民族学专业职业生涯规划范文:积跬步以至千里
2014/09/11 职场文书
国庆节促销广告语2014
2014/09/19 职场文书
教师个人教学总结
2015/02/11 职场文书
刑事申诉状范文
2015/05/20 职场文书