ruoyi-vue登录流程梳理

1.前端向后端发送/login登录请求,发送json数据。JSON数据中包含(username,password,code,uuid。
后端的login接口进行处理
在这里插入图片描述

在这里插入图片描述
2.后端调用loginService的login() 方法进行用户登录校验。
loginService.login(loginBody.getUsername(), loginBody.getPassword(), loginBody.getCode(),
验证码校验通过 uuid从redis中取出验证码谜面和传过来的code进行对比。通过后进行用户名字和密码 校验,不通过记录下登录日志,抛出验证码异常。
登录认证使用了springsecurity框架+jwt 在SecurityConfig中配置相关信息。
在这里插入图片描述
注入AuthenticationManager
在这里插入图片描述
在这里插入图片描述
authentication = authenticationManager.authenticate(authenticationToken);该方法会去调用UserDetailsServiceImpl.loadUserByUsername从数据库中加载用户信息

在这里插入图片描述
通过认证后,会将用户的信息和权限列表存到redis中,key为随机生成的uuid,将uuid转化成token,返回给前端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用户之后的每次请求都会在请求头中带上token。

而JwtAuthenticationTokenFilter这个过滤器会拦截每一次请求,从请求中获取登录用户信息。从请求中获取token,然后从token中解析出uuid,根据uuid从redis中获取用户信息。

在这里插入图片描述
判断用户信息不为空并且SecurityUtils.getAuthentication()为空,刷新redis有效期。然后创建一个新的UsernamePasswordAuthenticationToken,把用户和权限填充进去。这个构造器会设置认证状态为true
在这里插入图片描述
然后把authenticationToken填充到SecurityContextHolder中,然后放行。
在这里插入图片描述
之后就可以从SecurityContextHolder获取用户信息和权限。
比如getinfo请求
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值