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


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 相关文章推荐
表单提交时自动复制内容到剪贴板的js代码
Mar 16 Javascript
js 控制下拉菜单刷新的方法
Mar 03 Javascript
js计算任意值之间随机数的方法
Jan 16 Javascript
jQuery遍历页面所有CheckBox查看是否被选中的方法
Apr 14 Javascript
Jquery效果大全之制作电脑健康体检得分特效附源码下载
Nov 02 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
Feb 18 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
node.js入门教程之querystring模块的使用方法
Feb 27 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
微信小程序适配iphoneX的实现方法
Sep 18 Javascript
解决Idea、WebStorm下使用Vue cli脚手架项目无法使用Webpack别名的问题
Oct 11 Javascript
node.js使用stream模块实现自定义流示例
Feb 13 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
Yii框架在页面输出执行sql语句以方便调试的实现方法
2014/12/24 PHP
PHP实现对png图像进行缩放的方法(支持透明背景)
2015/07/15 PHP
php curl优化下载微信头像的方法总结
2018/09/07 PHP
PHP实现简单的计算器
2020/08/28 PHP
关于Mozilla浏览器不支持innerText的解决办法
2011/01/01 Javascript
jQuery 选择器项目实例分析及实现代码
2012/12/28 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
gameboy网页闯关游戏(riddle webgame)--仿微信聊天的前端页面设计和难点
2016/02/21 Javascript
javascript常见数字进制转换实例分析
2016/04/21 Javascript
jQuery实现级联下拉框实战(5)
2017/02/08 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
vue动画打包后失效问题的解决方法
2018/09/18 Javascript
Vue.js实现备忘录功能
2019/06/26 Javascript
Vue 3.x+axios跨域方案的踩坑指南
2019/07/04 Javascript
JS实现手写 forEach算法示例
2020/04/29 Javascript
vue实现防抖的实例代码
2021/01/11 Vue.js
python连接池实现示例程序
2013/11/26 Python
Python HTMLParser模块解析html获取url实例
2015/04/08 Python
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
Python各类图像库的图片读写方式总结(推荐)
2018/02/23 Python
ZABBIX3.2使用python脚本实现监控报表的方法
2019/07/02 Python
对Python函数设计规范详解
2019/07/19 Python
Python读写压缩文件的方法
2020/07/30 Python
Django项目创建及管理实现流程详解
2020/10/13 Python
使用canvas生成含有微信头像的邀请海报没有微信头像问题
2019/10/29 HTML / CSS
微软中国官方旗舰店:销售Surface、Xbox One、笔记本电脑、Office
2018/07/23 全球购物
十佳教师事迹材料
2014/01/11 职场文书
运动会广播稿400字
2014/01/25 职场文书
竞聘演讲稿
2014/04/24 职场文书
《山谷中的谜底》教学反思
2014/04/26 职场文书
英语教师求职信范文
2015/03/20 职场文书
2016年植树节红领巾广播稿
2015/12/17 职场文书
go语言中fallthrough的用法说明
2021/05/06 Golang
Django实现WebSocket在线聊天室功能(channels库)
2021/09/25 Python
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL