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


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中void(0)的具体含义解释
Feb 27 Javascript
jQuery中:reset选择器用法实例
Jan 04 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
Mar 03 Javascript
3个可以改善用户体验的AngularJS指令介绍
Jun 18 Javascript
详解AngularJS中的http拦截
Feb 09 Javascript
JS实现Select的option上下移动的方法
Mar 01 Javascript
jQuery获取父元素及父节点的方法小结
Apr 14 Javascript
node.js连接mongoDB数据库 快速搭建自己的web服务
Apr 17 Javascript
JavaScript使用prototype原型实现的封装继承多态示例
Aug 31 Javascript
详解关于vue2.0工程发布上线操作步骤
Sep 27 Javascript
Vue.js仿Select下拉框效果
Feb 18 Javascript
JavaScript实现轮播图效果
Oct 30 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 JSON 数据解析代码
2010/05/26 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
2011/10/29 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
JavaScript语法着色引擎(demo及打包文件下载)
2007/06/13 Javascript
基于jquery的button默认enter事件(回车事件)。
2011/05/18 Javascript
基于JQuery实现的图片自动进行缩放和裁剪处理
2014/01/31 Javascript
Javascript数组Array基础介绍
2016/03/13 Javascript
基于bootstrap插件实现autocomplete自动完成表单
2016/05/07 Javascript
理解AngularJs篇:30分钟快速掌握AngularJs
2016/12/23 Javascript
浅谈js函数三种定义方式 & 四种调用方式 & 调用顺序
2017/02/19 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
js省市区级联查询(插件版&无插件版)
2017/03/21 Javascript
详解Angular的8个主要构造块
2017/06/20 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
详解单页面路由工程使用微信分享及二次分享解决方案
2019/02/22 Javascript
python list 合并连接字符串的方法
2013/03/09 Python
Python查找函数f(x)=0根的解决方法
2015/05/07 Python
Python实现列表转换成字典数据结构的方法
2016/03/11 Python
Python实现端口检测的方法
2018/07/24 Python
Python完全识别验证码自动登录实例详解
2019/11/24 Python
Python抓包程序mitmproxy安装和使用过程图解
2020/03/02 Python
Python运行提示缺少模块问题解决方案
2020/04/02 Python
Python的scikit-image模块实例讲解
2020/12/30 Python
美国新兴城市生活方式零售商:VILLA
2017/12/06 全球购物
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
Reebok官方旗舰店:美国知名健身品牌锐步
2019/01/07 全球购物
网络事业创业计划书范文
2014/01/09 职场文书
《长城》教学反思
2014/02/14 职场文书
《桥》教学反思
2014/04/09 职场文书
2014年感恩母亲演讲稿
2014/05/27 职场文书
2015年学生会部门工作总结
2015/04/21 职场文书
初中运动会前导词
2015/07/20 职场文书
受欢迎的自荐信,就这么写!
2019/04/19 职场文书
正确的理解和使用Django信号(Signals)
2021/04/14 Python
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL