分布式,微信小程序 服务器保持登入态解决方案,

登入解决方案有很多,

传统:

      => 通过输入密码和用户名, 经过数据库查询, 然后将用户放入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存活时间, 也就是说需要定时自动登入, 清理已下线用户

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章