opencart登陆,magento504
2022-10-13 10:15:10 - 米境通
1、常见单机和分布式应用下登录校验
单机tomcat应⽤用登录检验
sesssion保存在浏览器和应用服务器会话之间。
用户登录成功,服务端会保存一个session,服务器会给客户端分发一个sessionID作为标识。
客户端会把sessionID保存在cookie中,每次请求都会携带这个sessionId。
分布式应用中session共享
真实的应用不可能单节点部署,所以就有个多节点登录session共享的问题需要解决。
tomcat支持session共享,但是有广播风暴;用户量大的时候,占用资源严重,不推荐。
使用redis存储token思路:
服务端使用UUID生成随机64位或128位token,放入redis中,然后返回给客户端并存储在cookie中。
用户每次访问都携带此token,服务端去redis中校验是否有此用户即可。
分布式应用中使用JWT解决方案
优点
生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库。
存储在客户端,不占用服务端的内存资源。
缺点
token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如用户权限,密码等。
如果没有服务端存储,则不能做登录失效处理,除非服务端改密钥。
对于JSONWebToken(JWT)基本概念,可以参考我以前的一篇文章,在此不过多赘述
密码加密与微服务鉴权JWT
相关问答: