验证码
查看验证码的请求:
之前已经讲过http://localhost/dev-api/code会在前端重写为http://localhost:8080/code。
请求第一步会进入网关模块
网关相关知识:Gateway基于的WebFlux框架,与我们平时用的WebMVC是不太一样的。网关由Route(路由)、Predicate(断言)、Filter(过滤器)组成。
详情可查看我之前写的文章:Spring Cloud Alibaba(一)——Gateway SpringCloud Gateway集成Alibaba Nacos实现动态路由配置
Ctrl+shift+R 快速定位到 /code 请求的位置 将请求指向到validateCodeHandler处理
我们打个断点查看 验证码逻辑
@符号之前的7+5=?生成图片经过base64编码 传给前端
答案12放在redis当中 有效期2分钟
返回的数据由uuid+图片
uuid也作为redis中key的一部分,后面用户登录的时候需要传回然后去对比redis当中的答案(保证每个请求都有一个自己独立的答案)
登录
相关知识:若依框架解读(微服务版)—— 1.登录逻辑
我们打个断点进入login方法
此处remoteUserService.getUserInfo()通过openFeign远程调用其他微服务获取用户信息
日志记录方法recordLogService.recordLogininfor()内部也是通过openFeign远程调用日志服务
详情可看若依框架解读(微服务版)——2.模块间的调用逻辑(ruoyi-api模块)(OpenFeign)
接下来就比较简单了。Jwt也比较简单。相关知识:JWT详解
生成token返回。redis里面token(ps:这里的token只是一个uuid,往前端返回的map里面的access_token才是token)为key,将用户信息为值存入redis。