微信小程序保持session会话的方法


Posted in Javascript onMarch 20, 2020

        一般我们web网站都会有cookie来保存session ID,将用户和服务器保持在一次会话中,但是很遗憾,微信小程序不支持cookie,他的每一次请求就是一次会话,这样就会产生一个问题,每次请求都需要确定当前的用户是谁,但是我们又不能在每次请求的数据中携带用户的信息,这样是不安全的。今天就介绍两种方式来实现保持会话。

第一种:客户端保存session ID

        1、通过wx.login接口获取 code,将code传递到后台(一般后台都有shiro或者Spring security这种过滤器,该方法作为第一个启动方法需要后台放过),后台通过code访问微信接口,返回当前登陆的微信信息。

微信小程序保持session会话的方法

2、后台通过微信的openID去数据库的微信信息表中查询该微信号是否与后台用户绑定过,如果绑定过,将该用户信息放入session中,并返回已绑定标记,为绑定过,返回为绑定标记。并且将会话ID返回。

微信小程序保持session会话的方法

微信小程序保持session会话的方法

3、小程序拿到sessionID和是否绑定标记,将session ID存入缓存中或者在app.js中定一个全局变量用来存储。如果未绑定,跳转到绑定页面,如果绑定,去往首页。

4、因为后台的session都有过期时间,默认是半个小时,所以说为了确保小程序端的session ID不会过期,我们需要在他过期之前刷新sessionID。

微信小程序保持session会话的方法

我们每过二十分钟刷新一次,也就是重新请求一次。

将该函数放到app.js的生命周期函数中,这样一旦打开小程序就会执行

微信小程序保持session会话的方法

5、每次请求需要将sessionID放入cookie中,并将它设置头request header中

微信小程序保持session会话的方法

第二种:小程序保持唯一标识uuid(如果后台过滤器需要登陆验证的话,小程序端的请求接口都需要放行),这个就不贴代码了,基本和上面逻辑差不多,只不过这次存的是uuid。

1、小程序请求微信,拿到code,请求后台并传递code
2、后台根据code请求微信,拿到openID
3、后台根据openID去微信信息表查询该openID是否绑定用户,绑定了,返回一个唯一表示uuid以及绑定标识,没有绑定,创建一个uuid以及未绑定标识返回给小程序
4、小程序判断未绑定,跳转到绑定页面,根据输入信息+uuid返回给后台绑定用户,后台返回是否绑定成功
5、根据绑定是否成功,小程序操作

小程序只保存uuid(相当于accesstoken),这个uuid是小程序与后台连接的桥。

注意:这两种方法都是不安全的,试想一下如果sessionID被劫持到了,并且还处于当前会话中,黑客完全可以通过该session ID恶意获取后台数据(类似CSRF攻击)。uuid的话,因为这种请求被后台过滤器放过,所以完全可以直接请求后台数据了。

到此这篇关于微信小程序保持session会话的方法的文章就介绍到这了,更多相关小程序保持session会话内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
jquery的ajax请求全面了解
Mar 20 Javascript
让页面上两个div中的滚动条(滑块)同步运动示例
Aug 07 Javascript
Jquery响应回车键直接提交表单操作代码
Jul 25 Javascript
node.js中的fs.utimesSync方法使用说明
Dec 15 Javascript
JS函数的几种定义方式分析
Dec 17 Javascript
jQuery实现文档树效果
Feb 20 Javascript
vue2中filter()的实现代码
Jul 09 Javascript
Bootstrap datepicker日期选择器插件使用详解
Jul 26 Javascript
js实现简易聊天对话框
Aug 17 Javascript
基于vue实现可搜索下拉框定制组件
Mar 26 Javascript
Echarts地图添加引导线效果(labelLine)
Sep 30 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 Javascript
微信小程序后端无法保持session的原因及解决办法问题
Mar 20 #Javascript
js 闭包深入理解与实例分析
Mar 19 #Javascript
JS一次前端面试经历记录
Mar 19 #Javascript
jQuery实现点击滚动到指定元素上的方法分析
Mar 19 #jQuery
浅析TypeScript 命名空间
Mar 19 #Javascript
JavaScript计算出两个数的差值
Mar 19 #Javascript
JavaScript利用键盘码控制div移动
Mar 19 #Javascript
You might like
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
利用php的ob缓存机制实现页面静态化方法
2017/07/09 PHP
redis+php实现微博(一)注册与登录功能详解
2019/09/23 PHP
PHP 99乘法表的几种实现代码
2020/10/13 PHP
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
jquery submit ie6下失效的原因分析及解决方法
2013/11/15 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
关于Javascript加载执行优化的研究报告
2014/12/16 Javascript
详解JavaScript编程中正则表达式的使用
2015/10/25 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
理解javascript async的用法
2017/08/22 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
javascript将json格式数组下载为excel表格的方法
2017/12/22 Javascript
详解写好JS条件语句的5条守则
2019/02/28 Javascript
layui 表单标签的校验方法
2019/09/04 Javascript
Angular8引入百度Echarts进行图表分析的实现代码
2019/11/27 Javascript
一篇文章带你浅入webpack的DLL优化打包
2020/02/20 Javascript
Python 2与Python 3版本和编码的对比
2017/02/14 Python
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本
2019/02/25 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
2019/06/25 Python
Python实现中值滤波去噪方式
2019/12/18 Python
python对接ihuyi实现短信验证码发送
2020/05/10 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
python二维图制作的实例代码
2020/12/03 Python
Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单
2021/02/01 Python
美国豪华时尚女性精品店:Kirna Zabête
2018/01/11 全球购物
经典促销广告词大全
2014/03/19 职场文书
五年级学生评语
2014/04/22 职场文书
爱国主义演讲稿
2014/05/07 职场文书
宿舍标语大全
2014/06/19 职场文书
小学师德师风整改措施
2014/10/27 职场文书
2014年医生工作总结
2014/11/21 职场文书
民事和解协议书格式
2014/11/29 职场文书
2014年建筑工程工作总结
2014/12/03 职场文书
魂断蓝桥观后感
2015/06/10 职场文书
家电创业计划书
2019/08/05 职场文书