微信小程序保持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技巧
Dec 06 Javascript
禁止js文件缓存的代码
Apr 09 Javascript
jQuery在vs2008及js文件中的无智能提示的解决方法
Dec 30 Javascript
Javascript 遍历页面text控件详解
Jan 06 Javascript
js实现的GridView即表头固定表体有滚动条且可滚动
Feb 19 Javascript
JavaScript获取当前运行脚本文件所在目录的方法
Feb 03 Javascript
JS函数多个参数默认值指定方法分析
Nov 28 Javascript
Bootstrap基本样式学习笔记之表格(2)
Dec 07 Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 Javascript
jquery 验证用户名是否重复代码实例
May 14 jQuery
Vue实现点击按钮复制文本内容的例子
Nov 09 Javascript
vue 实现图片懒加载功能
Dec 31 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
PHP convert_uudecode()函数讲解
2019/02/14 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
jQuery 表格插件整理
2010/04/27 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
JavaScript判断一个URL链接是否有效的实现方法
2011/10/08 Javascript
js自执行函数的几种不同写法的比较
2012/08/16 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
2014/03/10 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
JavaScript中的类数组对象介绍
2014/12/30 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
AngularJS 依赖注入详解及示例代码
2016/08/17 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
2016/09/18 Javascript
JavaScript实现类似拉勾网的鼠标移入移出效果
2016/10/27 Javascript
Vue.js中用v-bind绑定class的注意事项
2016/12/13 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
Nodejs中crypto模块的安全知识讲解
2018/01/03 NodeJs
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
JavaScript数据结构与算法之检索算法示例【二分查找法、计算重复次数】
2019/02/22 Javascript
Element实现表格嵌套、多个表格共用一个表头的方法
2020/05/09 Javascript
在Python的Bottle框架中使用微信API的示例
2015/04/23 Python
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
pytorch GAN伪造手写体mnist数据集方式
2020/01/10 Python
基于python实现百度语音识别和图灵对话
2020/11/02 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
护士实习自我鉴定
2013/10/22 职场文书
财务与信息服务专业推荐信
2013/11/28 职场文书
模范教师事迹材料
2014/02/10 职场文书
计算机科学系职业生涯规划书
2014/03/08 职场文书
党性观念心得体会
2014/09/03 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
python opencv检测直线 cv2.HoughLinesP的实现
2021/06/18 Python
分析并发编程之LongAdder原理
2021/06/29 Java/Android