分布式,微信小程序 服务器保持登入态解决方案,
登入解决方案有很多,
传统:
=> 通过输入密码和用户名, 经过数据库查询, 然后将用户放入session, 下发sessionid 给游览器, 每次游览器携带cookie 里面的sessionid, 访问服务器, 查询session , 判断用户是否登入
现在:
spring boot + spring cloud , dubbox + zookeeper 等一系列的分布式微服务框架兴起, 各服务层分离, cookie 已经无法穿过服务器访问, 造成查询不到用户 == 未登入
解决方案:
1, 加密算法解决方案, 优势就是简单, 用户登入以后将用户的标志, 如 用户id 与 时间戳 加密成密文, 返回给前端, 前端每次操作,都将密文上传, 服务器拿到密文后解密成id与时间戳, 进行操作, 缺点就是不安全, 加密算法可能会被**, 加密工具类
2, 采用redis 存储登入秘钥, 这也是楼主推荐的, 当前主流的解决方案, 用户在登入以后, 将用户的 id + 随机字符数(如UUID) + 时间戳 , 组成redis 的key, 设置redis 的key 存活时间不能太长, 因为redis的key数量有限, 将用户加密数据存储到redis 后, 将密文返回给用户, 每次用户操作都携带密文进行操作, 服务器设置全局过滤器, 进行全局校验登入状态, 从redis 查询登入状态, 这样用户的密文都是不一样的, 也保证了数据的安全性, 而redis 是可以共享的, 分布式服务器的服务都能看的见,
还需要使用心跳, 定时更新redis的key存活时间, 也就是说需要定时自动登入, 清理已下线用户