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


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中使用构造函数实现继承的代码
Aug 12 Javascript
JavaScript常用对象的方法和属性小结
Jan 24 Javascript
AngularJs定制样式插入到ueditor中的问题小结
Aug 01 Javascript
jQuery检查元素存在性(推荐)
Sep 17 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
基于jQuery实现咖啡订单管理简单应用
Feb 10 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
JS库 Highlightjs 添加代码行号的实现代码
Sep 13 Javascript
JS实现字符串去重及数组去重的方法示例
Apr 21 Javascript
今天,小程序正式支持 SVG
Apr 20 Javascript
使用 webpack 插件自动生成 vue 路由文件的方法
Aug 20 Javascript
深入理解基于vue-cli的webpack打包优化实践及探索
Oct 14 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/01 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
2012/05/31 PHP
PHP中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
Yii框架实现记录日志到自定义文件的方法
2017/05/23 PHP
PHP使用zlib扩展实现GZIP压缩输出的方法详解
2018/04/09 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
jquery链式操作的正确使用方法
2014/01/06 Javascript
返回上一页并自动刷新的JavaScript代码
2014/02/19 Javascript
jQuery中data()方法用法实例
2014/12/27 Javascript
javascript下拉列表中显示树形菜单的实现方法
2015/11/17 Javascript
浅谈javascript中的call、apply、bind
2016/03/06 Javascript
js 动态给元素添加、移除事件的实现方法
2016/07/19 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
vue使用stompjs实现mqtt消息推送通知
2017/06/22 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
浅谈vue自定义全局组件并通过全局方法 Vue.use() 使用该组件
2017/12/07 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
关于Vue的路由权限管理的示例代码
2018/03/06 Javascript
JS代码实现电脑配置检测功能
2018/03/21 Javascript
Angularjs实现页面模板清除的方法
2018/07/20 Javascript
解决vue v-for 遍历循环时key值报错的问题
2018/09/06 Javascript
微信小程序 函数防抖 解决重复点击消耗性能问题实现代码
2019/09/12 Javascript
深度解读vue-resize的具体用法
2020/07/08 Javascript
详解Python的单元测试
2015/04/28 Python
对python中array.sum(axis=?)的用法介绍
2018/06/28 Python
python3 简单实现组合设计模式
2020/07/02 Python
python中使用np.delete()的实例方法
2021/02/01 Python
使用CSS3的rem属性制作响应式页面布局的要点解析
2016/05/24 HTML / CSS
高中军训感言200字
2014/02/23 职场文书
2014年安置帮教工作总结
2014/12/11 职场文书
2015教师节师德演讲稿
2015/03/19 职场文书
想要创业,那么你做好准备了吗?
2019/07/01 职场文书
Java反应式框架Reactor中的Mono和Flux
2021/07/25 Java/Android
python读取mnist数据集方法案例详解
2021/09/04 Python
Vue OpenLayer测距功能的实现
2022/04/20 Vue.js