登录--微服务

在同父域下完成登录

使用springSession的方式,将用户登录信息放入springSession,session的存储位置在redis中,

用户登录后将用户信息放入SpringSession中;

1、当用户在访问一些需要登录的页面时,使用拦截器拦截,判断是否携带token,没有携带token则表示没有登录,这时携带情求地址跳转到重定向到验证中心登录界面进行登录, 如果携带了token,则根据该token到SpringSession中去取该用户信息,如果取不到则携带情求地址跳转到重定向到验证中心登录界面进行登录,如果根据该token到session中取到了用户登录信息则说明已登录,放行,return true;

2、这时到验证中心的登录逻辑处理,用户登录成功,这时生成一个uuid作为token,然后将该token作为key用的登录信息作为value放入到session中;将tooken写入到cookie中;然后 跳转重定向到该请求原来想要到的页面中去  return "redirect:"+requestURL;

3、退出登录,用户携带tooken到后端,根据该tooken到session中删除该用户信息;

注意:以上建立在同一个父域下面才可以!

单点登录

思路图

思路解析:

 这里会用到在redis中存放用户登录信息,在客户端写入cookie,和使用springSession的方式进行实现单点登录,即在不同的域下实现登录

用户登录后将用户信息放入SpringSession中,只能放在自己的域下的session中,session是不能跨域的;

1、当用户在访问一些需要登录的页面时,使用拦截器拦截,判断是否携带token;

2、如果携带了token,说明是登录回调或已登录,然后验证token的合法性,验证token是否是正确的(验证需要在认证服务器验证), 然后根据token到redis中取出用户信息 ,然后将该用户信息放在session中(例:session.setAttribute("loginUser",user););

3、如果没有携带token(不代表没有登录),先到session中去取用户信息(例:session.getAttribute("loginUser");)

,如果取到了用户登录信息则说明已登录,放行,return true,如果取不到,则携带请求地址到验证中心的登录界面去进行登录;

4、这时到验证中心的登录逻辑处理,在还没有打开登录界面的前一步,将要跳转的方法中,判断是否有携带cookie(该cookie的value应该是token,该cookie自己随便起个名字,只要与放入cookie时名字一样就行,后面会放入),如果有携带cookie,则拿出该cookie的value作为key到redis中去取token,如果取到到了token则说明该用户已登录,此时携带该tooken跳转重定向到原本用户想要跳转的页面去;

5、验证中心的登录逻辑处理,用户填写信息登录,用户登录成功,这时生成一个uuid作为token,然后将该token作为key用的登录信息作为value放入到redis中;将tooken写入到cookie中;然后 携带token到跳转重定向到该请求原来想要到的页面中去  return "redirect:"+requestURL;

6、这时又请求原本用户想要请求的界面,又会被拦截器拦截,但是此时redis中已经有该用户的登录信息,就可以完成登录了

7、退出登录,用户携带tooken到后端,根据该tooken到session中和redis中删除该用户信息;

token续期问题

当用户有操作时自动续期,加上该注解,默认是三十分钟,超过三十分钟,session失效,自然也就不在登录状态;

网上开源的单点登录项目

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值