单点登录

266 阅读1分钟

用户登录实现方式

单一服务器模式

 使用session对象实现
 登录成功后把用户数据放到session里面
 判断是否登录,从session获取数据
 session.setAttribute()
 session.getAttribute()

缺点:无法扩展,受服务器性能影响

单点登录SSO(Single Sign On)

在一个服务模块登录后,其他模块无需再登录

三种常见方式

1.session广播机制实现

当模块较多时,比较浪费资源;数据冗余,存在多份一样的数据

session默认过期时间30分钟

2.cookie+redis实现

在项目中任何一个模块登录后,把数据放到两个地方

redis:key:生成唯一随机值(ip、用户id等) value:用户数据

cookie:存放redis生成的key值放到cookie

访问其他模块,发送请求带着cookie进行发送,服务器获取cookie值,在redis中查询,根据key进行查询,如果找到就是登录状态

3.使用token token:按照一定规则生成字符串,字符串可以包含用户信息

在项目中某个模块登录之后,按照规则生成字符串,把登录之后用户包含到生成字符串里面,返回字符串

可以把字符串通过cookie返回

把字符为通过地址栏返回

访问其他模块时,每次访问在地址栏带着生成字符串,在访问模块里面获取地址字符串,根据字符串获取用户信息。如果可以获取到,就是登录状态