SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统,注册和登录都是一个单独的系统。
传统登陆模式:
判断用户是否登录:判断session中是否有用户信息,通常使用拦截器来处理。
集群:多台服务器提供相同服务;
建立集群:Session复制,
集群中的节点最多不能超过5个,并发量多了要采用分布式;
Session服务器:Session的统一管理
单点登录主要解决了Session共享的问题;
认证:检查数据是否可用
传递参数(用户名,手机号,邮箱唯一),类型(1/2/3)
如果数据库中存在该数据,该注册数据不可用,不存在的话该数据可以使用。
/{param}/{type}:URL传参,后台接收要用@PathVariable注解。
注册:先验证用户名、手机号和邮箱是否为空,然后认证用户信息是否重复,之后对密码进行Bcrypt加密,之后插入数据。
登录:先校验用户名是否存在,再校验密码是否正确,然后使用UUID生成token,把密码清空,将token作为key,用户信息作为value放入到redis中并
设置Sessio的有效时间,然后将token放入到cookie中。
再次登录:先从Cookie中取token,调用接口通过token去redis中查询是否存在用户信息,查不到说明用户登录已经过期返回登录页面,存在重新设置
过期时间,返回用户已经登录然后进入到首页。
安全退出:通过token去删除redis中的用户信息,并把过期时间设置为0.
解决js的跨域问题可以使用jsonp。
JsonUtils.objectToJson():对象转JSON
JsonUtils.jsonToPojo():JSON转对象