单点登录——用户中心大致流程

客户端需要登录后才能执行的操作,在拦截器Interceptor中设置。第一次访问客户端拦截器(拦截所有登录后才能做的操作,目录规划时要规划好,/back**),没有token,跳转到用户中心服务器(response.sendRedirect(url)),(url中带着returnUrl,用来在用户中心登录成功后跳转回客户端正在访问的页面),登录成功后,生产token,并且将token追加到returnUrl上,同时在服务器端session中保存登录成功获得的admin,在服务ConstatFinalUtil的常量中创建一个Map,并且将键值对“token,adminJSON”(变成JSON是为了方便与客户端传输)保存到Map中(实际上是放到redis中),跳转回带着tokenreturnUrl,及返回客户端。

这时候第二次访问客户端拦截器,已经带上token。有了token还不行,需要到用户中心中去核对是不是用户中心生成的token(防止用户自己自己加token),这时候用到一个URL类,可以获取指定网址返回的内容,可以封装成HttpUtil工具类。具体做法是将版本号version、加密信息、token等信息打包成JSON对象,用HttpUtil工具类连接访问到用户中心的verifyTokenServie服务,来验证token等信息是否正确(验证token通过在生成tokenMap中查找键是“token”的admin是否为null如果为null这证明此token没有,如果不为null则证明token是真的),如果token验证为真,则将得到的admin、成功信息等打包成JSON格式,返回HttpUtil,再返回到客户端Interceptor,这时候客户端就有了admin等信息了。

强调:(1)客户端与用户中心交互,由于是两个服务器通过http协议传递信息,所以admin等信息都是先封装成JSON格式,再用JSON.toJsonString,转换成JSON格式的字符串传递,另一端接收后再用JSON.parse()转换为JSON对象。

(2)第一次生成admin后在服务器端的session中存储,可以在服务器端记录客户端用户登录状态,访问之前先看session中有没有admin,如果得到值不为null,则证明此用户已经在用户中心登录过;客户端第一次接收到admin也在保存在session,可以在客户端记录用户登录信息,用户访问时如果session中的“admin”不为null则证明已经登录过,就不用去用户中心登录了。

用一副图简易表示:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值