用户登录实现方式
单一服务器模式
使用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返回
把字符为通过地址栏返回
访问其他模块时,每次访问在地址栏带着生成字符串,在访问模块里面获取地址字符串,根据字符串获取用户信息。如果可以获取到,就是登录状态