==分布式应用的登录校验解决方案有哪几种==
方案一:
真实的应用不可能单节点部署,所以就有个多节点登录session共享的问题需要解决
tomcat支持session共享,但是有广播风暴;用户量大的时候,占用资源就严重,不推荐
方案二:
使用redis存储token:
服务端使用UUID生成随机64位或者128位token,放入redis中,然后返回给客户端并存储在cookie中
+ 用户每次访问都携带此token,服务端去redis中校验是否有此用户即可
方案三(推荐):
JWT( json wen token)
什么是JWT?
JWT 是一个开放标准,它定义了一种用于简洁,自包含的用于通信双方之间以 JSON 对象的形式安全传递信息的方法。 可以使用 HMAC 算法或者是 RSA 的公钥密钥对进行签名
简单来说:**就是通过一定规范来生成**token,然后可以通过解密算法逆向解密token,这样就可以获取用户信息
优点:
生产的token可以包含基本信息,比如id、用户昵称、头像等信息,避免再次查库
存储在客户端,不占用服务端的内存资源
缺点:
token是经过base64编码,所以可以解码,因此token加密前的对象不应该包含敏感信息,如用户权限,密码等
如果没有服务端存储,则不能做登录失效处理,除非服务端改秘钥