1、概述
最近在学习码云上的项目RuoYi-Cloud-Plus,通过观看代码确定它是如何把Sa-Token集成到SpringCloud上的。
主要涉及到ruoyi-auth,ruoyi-gateway,ruoyi-system三个服务,主要用到了ruoyi-common-redis,ruoyi-common-satoken,ruoyi-common-security三个公共子模块。
2、服务与公用模块介绍
ruoyi-auth服务主要有获取验证码、登录、注册等接口;ruoyi-gateway是网关,把http请求转发给其它服务;ruoyi-system服务包含基本系统管理等接口。
ruoyi-common-redis模块主要是配置redis,提供RedisUtils等工具类;ruoyi-common-satoken模块主要对Sa-Token进行配置,提供LoginHelper类;ruoyi-common-security设置Sa-Token拦截器,被服务uoyi-auth,ruoyi-system使用,使得不能直接通过服务的IP地址和端口号访问除ruoyi-gateway外的其它服务,而必须通过ruoyi-gateway网关访问服务。
2、依赖
微服务ruoyi-auth,ruoyi-system用到了依赖cn.dev33:sa-token-spring-boot3-starter,ruoyi-gateway用到了依赖cn.dev33:sa-token-reactor-spring-boot3-starter。
此外,ruoyi-gateway还设置了过滤器SaReactorFilter和ForwardAuthFilter,SaReactorFilter主要设置网关对哪些请求进行认证判断,ForwardAuthFilter对网关处理过的请求打上一个标志。
3、大致登录认证逻辑
前端通过ruoyi-gateway网关调用ruoyi-auth服务的登录接口进行登录,ruoyi-auth服务远程调用ruoyi-system服务用户相关接口进行验证,通过后返回token。
前端接收到token后,会在后续请求的头部附上token信息。ruoyi-gateway网关接收到后续其它请求后,会对token进行验证,验证通过后,再转发给其它服务。其它服务收到请求后,会再对请求进行验证,判断是否处理。
4、总结
本文大致说明RuoYi-Cloud-Plus对token的相关处理,忽略了对Clientid的处理,也忽略了许多细节,具体可去查看RuoYi-Cloud-Plus的源码。