这篇博客便对此做点单登录系统进行总结。
SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。它是目前比较流行的企业业务整合的解决方案之一。
就比如在我这个系统中,由于各个系统拆分在不同的系统中,
比如选课系统,和登录系统,这俩不在同一个tomcat下,如果使用tomcat内置的session,这可取不到信息,需要配置tomcat集群。用tomcat相互之间session相互广播的方式,配置tomcatSession复制。
如图所示:
在服务节点较少时候这种方式,没什么问题,但是随着tomcat节点的增多session的广播就会形成session风暴,严重暂用带宽。
解决办法: 可以将session服务单独抽离出来,使用Session服务器,保存Session信息。
session本质上就是一组带有过期时间的键值对数据,这种数据有没有发现和Redis极为相似,所以本项目采用Redis作为Session服务器存储Session。
单点登录系统实现
注册
要登录先注册,和正常系统流程没啥区别。直接上代码
@Override
public EasResult register(TbUser user) {
//数据有效性校验
if (StringUtils.isBlank(user.getUsername()) || StringUtils.isBlank(user.getPassword())
|| StringUtils.isBlank(user.getPhone())) {
return EasResult.build(400, "用户数据不完整,注册失败");
}
//1.用户名 2.手机号 3.邮箱
EasResult result = checkData(user.getUsername(), 1)