登录方式
早期登录方式
早期单一服务器,用户认证。使用session技术,将我们登录的信息存储到session中,然后取出来和数据库信息进行比较,然后登录
缺点:单点性能压力,无法扩展
分布式单点登录(SSO模式)
- 优点:用户身份信息独立管理,更好的分布式管理。可以自己扩展安全策略
- 缺点: 认证服务器访问压力较大。
单点登录的三种方式
第一种:session广播方式
简单来说就是将用户登录信息存储到session中,然后复制到各个服务
缺点:每次都要复制,如果服务较多,那么将会相当麻烦,并且数据重复,浪费存储空间
第二种:cookie+redis实现
在一个项目中的任何一个模块进行登录,登录成功之后,我们将数据放到两个地方cookie和redis中
- redis:key中存储生成的唯一值,value中存储用户数据
- cookie:将redis中生成的key放到cookie中
所以当我们访问其他模块的时候,带着cookie去访问,然后从redis中进行查询,如果查询出数据,那么不用再次登录
第三种:token实现
token是什么呢?
token也可以称做令牌,一般由 uid+time+sign(签名)+[固定参数] 组成
在一个项目中的某个模块进行登录,登录完成后,按照制定规则生成一个token,token包含用户的信息,生成一个字符串
- 可以将字符串通过cookie返回
- 可以将字符串通过地址栏返回
当我们再次去访问其他模块的时候,每次访问带着token,在访问模块里面获取地址栏的token,根据token进行获取用户信息,如果能够获取到,则说明已经登录,不需要再重复登录