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


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 相关文章推荐
tagName的使用,留一笔
Jun 26 Javascript
手机开发必备技巧:javascript及CSS功能代码分享
May 25 Javascript
JS禁用页面上所有控件的实现方法(附demo源码下载)
Dec 17 Javascript
AngularJS控制器controller正确的通信的方法
Jan 25 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 Javascript
ECMAScript6轮播图实践知识总结
Aug 17 Javascript
jQuery实现验证码功能
Mar 17 Javascript
Angularjs使用指令做表单校验的方法
Mar 31 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
薪资那么高的Web前端必看书单
Oct 13 Javascript
JavaScript使用ul中li标签实现删除效果
Apr 15 Javascript
Vue3 实现双盒子定位Overlay的示例
Dec 22 Vue.js
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面向对象编程快速入门
2006/10/09 PHP
我的论坛源代码(八)
2006/10/09 PHP
用PHPdig打造属于你自己的Google[图文教程]
2007/02/14 PHP
php断点续传之如何分割合并文件
2014/03/22 PHP
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
PHP观察者模式原理与简单实现方法示例
2017/08/25 PHP
最佳的addEvent事件绑定是怎样诞生的
2011/10/24 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
Table冻结表头示例代码
2013/08/20 Javascript
js将控件隐藏及display属性的使用介绍
2013/12/30 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
2015/09/01 Javascript
详解JavaScript正则表达式之RegExp对象
2015/12/13 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
js操作浏览器的参数方法
2017/01/21 Javascript
详解nodejs中的process进程
2017/03/19 NodeJs
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
mpvue跳转页面及注意事项
2018/08/03 Javascript
vue基础之v-bind属性、class和style用法分析
2019/03/11 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
vue+element模态框中新增模态框和删除功能
2019/06/11 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
python微信跳一跳系列之棋子定位颜色识别
2018/02/26 Python
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
打印机墨盒:123Inkjets
2017/02/16 全球购物
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
安全生产宣传标语
2014/06/06 职场文书
校运动会广播稿300字
2014/10/07 职场文书
毕业生评语大全
2015/01/04 职场文书
租赁协议书
2015/01/27 职场文书
简历自我评价模板
2015/03/11 职场文书
学校节水倡议书
2015/04/29 职场文书
HTML基础-标签分类(闭合标签,空标签,块级元素,行内元素,行级块元素,可替换元素)
2021/03/31 HTML / CSS
SpringBoot+Redis实现布隆过滤器的示例代码
2022/03/17 Java/Android
css之clearfix的用法深入理解(必看篇)
2023/05/21 HTML / CSS