【未经作者本人同意,请勿以任何形式转载】
####》什么是登录态?
所谓登录态,就是程序在运行时,能够识别当前用户,能够证明自己的唯一性且合法。
我们知道,WEB 服务器通过浏览器携带的 cookie 获取 session 来判断是否是同一用户(或浏览器);Restful 服务通过客户端传过来唯一 ID,来识别调用用户。
####》为什么需要维护登录态?
- 有自身用户体系的应用
- 用户敏感数据,只对用户可见
- 涉及用户相关的业务,比如我的订单、个性化推荐等
####》小程序登录态维护实现流程
- 通过 wx.login 获取登录态。
- 通过登录返回的 code 发送给服务器,服务器用 code 换取 session_key 和 openid 后。
- 获取 session_key 后一般使用缓存框架保存登录态,服务端随机生成一串唯一字符串 3rdSessionId 为 key,session_key 为 value 组成键值对并存到缓存当中,缓存时间视情况自行决定。
- 将 3rdSessionId 返回给客户端
- 客户端将 3rdSessionId 缓存到 localStorage 中,后续接口从缓存中读取 3rdSessionId,传递给服务器;服务器根据 3rdSessionId 来判断用户身份。
- 如果服务器根据 3rdSessionId 在缓存中查找是否存在 session_key,如果存在正常执行;如果不存在小程序未登录,重新从第一步流程走。
以上流程是官方推荐使用的流程,并不是维护登录态的唯一途径。
另外,你也可以在小程序中使用 wx.checkSession()检查登录态是否过期。如果过期重新调用 wx.login 接口。
session_key 在微信服务器有效期是 30 天,建议服务端缓存 session_key 不超过 30 天。
你也可以关注我的微信公众号『ITNotes』, 一起交流学习 。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于