微信小程序保持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 相关文章推荐
解放web程序员的输入验证
Oct 06 Javascript
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
Feb 03 Javascript
js不能跳转到上一页面的问题解决方法
Mar 01 Javascript
js实现快速分享功能(你的文章分享工具)
Jun 25 Javascript
点击标签切换和自动切换DIV选项卡
Aug 10 Javascript
浅析Node.js查找字符串功能
Sep 03 Javascript
jQuery实现checkbox全选的方法
Jun 10 Javascript
JavaScript中数组的22种方法必学(推荐)
Jul 20 Javascript
bootstrap模态框垂直居中效果
Dec 03 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
Mar 30 Javascript
用js实现每隔一秒刷新时间的实例(含年月日时分秒)
Oct 25 Javascript
JavaScript继承的特性与实践应用深入详解
Dec 30 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
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP注释实例技巧
2008/10/03 PHP
php牛逼的面试题分享
2013/01/18 PHP
php中存储用户ID和密码到mysql数据库的方法
2013/02/06 PHP
phpmailer发送gmail邮件实例详解
2013/06/24 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
ThinkPHP在新浪SAE平台的部署实例
2014/10/31 PHP
php curl简单采集图片生成base64编码(并附curl函数参数说明)
2019/02/15 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
jquery制作多功能轮播图插件
2015/04/02 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
微信小程序 实现tabs选项卡效果实例代码
2016/10/31 Javascript
js实现随机数字字母验证码
2017/06/19 Javascript
使用JQuery实现图片轮播效果的实例(推荐)
2017/10/24 jQuery
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
JS前端知识点offset,scroll,client,冒泡,事件对象的应用整理总结
2019/06/27 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
vue路由守卫及路由守卫无限循环问题详析
2019/09/05 Javascript
VUE+node(express)实现前后端分离
2019/10/13 Javascript
Vue中通过属性绑定为元素绑定style行内样式的实例代码
2020/04/30 Javascript
python读取注册表中值的方法
2013/04/08 Python
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
Python判断列表是否已排序的各种方法及其性能分析
2016/06/20 Python
Python正则表达式使用范例分享
2016/12/04 Python
Django model update的多种用法介绍
2020/03/28 Python
python 使用socket传输图片视频等文件的实现方式
2019/08/07 Python
检测用户浏览器是否支持CSS3的方法
2009/08/29 HTML / CSS
实习生自我评价
2014/01/18 职场文书
企业员工培训感言
2014/02/26 职场文书
写好自荐信需做到的5要点
2014/03/07 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
上课说话检讨书
2015/01/27 职场文书
大学生就业意向书
2015/05/11 职场文书
2015年挂职干部工作总结
2015/05/14 职场文书
委托书范本格式
2019/04/18 职场文书
Vue router配置与使用分析讲解
2022/12/24 Vue.js