温馨提示:这篇文章已超过429天没有更新,请注意相关的内容是否还可用!
摘要:Uniapp小程序推出了一种新的接口请求和登录方案,即携带Token请求接口和无感知登录方案2.0。该方案允许用户在访问Uniapp小程序时,无需再次登录验证,通过携带Token进行接口请求,实现无缝的用户体验。这种方案简化了用户的操作流程,提高了用户体验的便捷性和流畅性。
Uniapp小程序通过携带Token的请求接口与无感知登录方案2.0,实现用户便捷登录和高效数据传输,小程序客户端保存用户Token,并在每次请求时自动携带,确保数据安全,无感知登录方案则通过后台自动验证用户身份,实现用户无感知自动登录,提升用户体验,该方案不仅提高了小程序的安全性和用户便利性,而且优化了用户操作流程。
一、关于Token请求接口与无感知登录方案的问题
在改进过程中,我们发现了以下问题:
1、当token到期时,应提示token过期而非返回空数据。
2、token过期后,需重新启动小程序才能获取新token,影响用户体验。
3、获取token后,原接口不继续请求,导致页面空白,数据需刷新才能显示。
问题及解决方案演示
【审核中】
目录
吐槽
token 是什么?
设计思路
操作流程
+ 后端代码(以Thinkphp5.0.24为案例)
+ 前端小程序封装代码
+ 演示流程
- 不存在本地缓存、不存在redis记录演示
- 本地缓存失效演示
- 服务器端redis记录失效演示
如何进行token鉴权
thinkphp5 redis补充
2.0改进方案
吐槽:在之前的开发中,我们未采用微信小程序提供的session作为token鉴权,对于使用"access_token作为token来请求验证接口、checkSession用来检测access_token有无过期"的做法,我深感担忧,这反映出技术社区的质量下降,误导开发者,为什么不能使用access_token作为token?官方回答指出:access_token只是用来调用微信提供的api服务的,其有效期仅两个小时,无法满足小程序长期保持用户登录状态的需求,checkSession是用来检测session_key的,而非access_token,我们需要寻找更合适的解决方案。
设计思路与操作流程
设计思路:通过小程序客户端发起wx.login()获取临时登录凭证code,并传至开发者服务器,利用微信提供的auth.code2Session接口,换取用户唯一标识openid和会话密钥session_key,以session_key为名,将openid为值存入redis,设置有效期为48小时,当服务端token失效或客户端checkSession失效或本地数据缓存失效时,重新登录,该设计保证了小程序端的token都是最新的,但仍有不足,即无法及时作废在服务器存储的原先数据,需等redis过期后处理,详细操作流程包括后端代码(以Thinkphp5.0.24为案例)、登录接口方法建议、演示流程等,建议查看原文档。
还没有评论,来说两句吧...