微信小程序保持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 相关文章推荐
javascript 极速 隐藏/显示万行表格列只需 60毫秒
Mar 28 Javascript
显示js对象所有属性和方法的函数
Oct 16 Javascript
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
js点击页面其它地方将某个显示的DIV隐藏
Jul 12 Javascript
解决Jquery鼠标经过不停滑动的问题
Mar 03 Javascript
详解Node.js实现301、302重定向服务
Apr 07 Javascript
使用mint-ui实现省市区三级联动效果的示例代码
Feb 09 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
帮你彻底搞懂JS中的prototype、__proto__与constructor(图解)
Aug 23 Javascript
使用Vue实现简单计算器
Feb 25 Javascript
react-intl实现React国际化多语言的方法
Sep 27 Javascript
Vue通过阿里云oss的url连接直接下载文件并修改文件名的方法
Dec 25 Vue.js
微信小程序后端无法保持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
Server.HTMLEncode让代码在页面里显示为源代码
2013/12/08 PHP
PHP定时更新程序设计思路分享
2014/06/10 PHP
php数组合并array_merge()函数使用注意事项
2014/06/19 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
2017/03/04 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
js 创建快捷方式的代码(fso)
2010/11/19 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)
2016/02/26 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
2016/06/20 Javascript
jquery,js简单实现类似Angular.js双向绑定
2017/01/13 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
JavaScript创建对象方法实例小结
2018/09/03 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
Vue中的验证登录状态的实现方法
2019/03/09 Javascript
eslint 的三大通用规则详解
2019/05/16 Javascript
JS数组push、unshift、pop、shift方法的实现与使用方法示例
2020/04/29 Javascript
Django中处理出错页面的方法
2015/07/15 Python
python取代netcat过程分析
2018/02/10 Python
python通过伪装头部数据抵抗反爬虫的实例
2018/05/07 Python
python八皇后问题的解决方法
2018/09/27 Python
Form表单及django的form表单的补充
2019/07/25 Python
Python中断多重循环的思路总结
2019/10/04 Python
Python 实现try重新执行
2019/12/21 Python
Pytorch高阶OP操作where,gather原理
2020/04/30 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
Python面向对象实现方法总结
2020/08/12 Python
python中绕过反爬虫的方法总结
2020/11/25 Python
JYSK加拿大:购买家具、床垫、家居装饰等
2020/02/14 全球购物
生物科学专业个人求职信范文
2013/12/05 职场文书
事业单位绩效考核实施方案
2014/03/27 职场文书
长江七号观后感
2015/06/11 职场文书
学前教育见习总结
2015/06/23 职场文书
二手手机买卖合同范本(2019年版)
2019/10/28 职场文书