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


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 相关文章推荐
为EasyUI的Tab标签添加右键菜单的方法
Jul 14 Javascript
javascript真的不难-回顾一下基础知识
Jan 15 Javascript
javascript获取元素CSS样式代码示例
Nov 28 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
Dec 04 Javascript
js动态移动滚动条至底部示例代码
Apr 24 Javascript
jQuery操作基本控件方法实例分析
Dec 31 Javascript
Vue.js动态组件解析
Sep 09 Javascript
jQuery模拟实现的select点击选择效果【附demo源码下载】
Nov 09 Javascript
Vue注册组件命名时不能用大写的原因浅析
Apr 25 Javascript
Vue路由守卫之路由独享守卫
Sep 25 Javascript
vue计算属性无法监听到数组内部变化的解决方案
Nov 06 Javascript
VUEX-action可以修改state吗
Nov 19 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执行批量mysql语句的解决方法
2013/05/02 PHP
ThinkPHP实例化模型的四种方法概述
2014/08/22 PHP
PHP Oauth授权和本地加密实现方法
2016/08/12 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
2017/02/28 PHP
PHP区块查询实现方法分析
2018/05/12 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
使用ExtJS技术实现的拖动树结点
2010/08/05 Javascript
Jquery Autocomplete 结合asp.net使用要点
2010/10/29 Javascript
Firefox/Chrome/Safari的中可直接使用$/$$函数进行调试
2012/02/13 Javascript
火狐下input焦点无法重复获取问题的解决方法
2014/06/16 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
JS通过Cookie判断页面是否为首次打开
2016/02/05 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
最实用的jQuery分页插件
2016/10/09 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
js随机生成一个验证码
2017/06/01 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
微信小程序实现通讯录列表展开收起
2020/11/18 Javascript
JavaScript Html实现移动端红包雨功能页面
2021/01/10 Javascript
python中的编码知识整理汇总
2016/01/26 Python
Python for循环生成列表的实例
2018/06/15 Python
Python操作MySQL数据库的示例代码
2020/07/13 Python
python中str内置函数用法总结
2020/12/27 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
高二化学教学反思
2014/01/30 职场文书
电大毕业自我鉴定
2014/02/03 职场文书
运动会跳远广播稿
2014/02/04 职场文书
市场营销求职信范文
2014/02/21 职场文书
群众路线自我剖析及整改措施
2014/11/04 职场文书
2014年项目经理工作总结
2014/11/24 职场文书
毕业典礼邀请函
2015/01/31 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书