美文网首页
单点登陆业务逻辑

单点登陆业务逻辑

作者: 西谷haul | 来源:发表于2021-08-03 17:42 被阅读0次

    1、点击登陆按钮时,首先是有一个全局过滤器。

    1、首先拿到填写的用户名密码,根据用户名去数据库查到密码,然后将数据库中解密后的密码和前台传来的密码进行对比。(验证通过继续,不通过返回用户名密码错误)

    2、拿到用户名去redis中查询是否有此用户名的token(redis中所有的用户信息是存储在一个userMap中,获取userMap的userName的value值):
    如果是null
    (1)表示没有登陆过或者过期,利用UUID生成一个token,然后以用户名为key,token为value组合成hash放到redis的userMap中。
    (2)将token为key,将用户名为value放入redis中,并且设置10分钟的过期时间。
    (3)然后对路径继续访问,访问成功后,以token为key,token+userName为value,重置了以上的redis数据。
    如果不是null
    (1)拿此token为key去redis中查是否存在(过期):
    ①如果存在,则用户正常直接登陆。
    ②如果不存在,则重新生成一个UUID作为token,重新进行上面的一步(然后以用户名为key,token为value组合成hash放到redis中。同时将token为key,将用户名为value放入redis中,并且设置过期时间。)

    最后,服务器将生成的ssoToken保存到session中,然后返回给浏览器。

    3、在用户退出登陆时,是在自己在项目中添加了一个过滤器进行处理的,首先在redis中将token为主键的数据删除,然后对session调用invalidate()方法。

    4、如果是直接访问的浏览器路径,而不是访问登陆路径,有一个全局的过滤器对请求进行过滤,request便不会有loginName和password,可以直接去session中取,如果能取到的话,拿着token区redis中验证是否有用户。

    相关文章

      网友评论

          本文标题:单点登陆业务逻辑

          本文链接:https://www.haomeiwen.com/subject/iduevltx.html