做狗狗网站的背景图,电商网站seo,聊城做wap网站价格,学计算机出来能干什么文章目录 1. 验证码功能的类清单2. 验证码的实现2.1. 验证码的获取2.2. 验证码的校验 3. 总结4. 资料参考 本文主要介绍了用户如何实现验证码#xff0c;以及该功能如何与 Spring Gateway 联系起来。 1. 验证码功能的类清单
类功能CaptchaProperties验证码的 yml 配置Captcha… 文章目录 1. 验证码功能的类清单2. 验证码的实现2.1. 验证码的获取2.2. 验证码的校验 3. 总结4. 资料参考 本文主要介绍了用户如何实现验证码以及该功能如何与 Spring Gateway 联系起来。 1. 验证码功能的类清单
类功能CaptchaProperties验证码的 yml 配置CaptchaConfig验证码图形的具体实现有数字和字符 2 种RouterFunctionConfiguration定义路由这是相对 controller 一种新的路由定义方式。ValidateCodeHandler路由RouterFunction需要HandlerFunction。桥梁作用。ValidateCodeService、ValidateCodeServiceImpl验证码功能的实现逻辑即 serviceserviceImplValidateCodeFilter针对特定请求需要验证码验证通过才可以
从以上类的清单也可以看出验证码的功能主要包括 2 个方面
验证码如何实现
主要用 google 的kaptcha来生成图片以及用 redis 来实现的 涉及到的类CaptchaConfig、CaptchaProperties、ValidateCodeServiceImpl 验证码如何与 Spring Gateway 的组件联系起来
这一点主要与 Spring Gateway 的工作原理有关系DispatcherHandler 是 Spring Gateway 最核心的类负责分发请求原理跟 MVC 的 DispatcherServlet 非常相似先暂时不表。 涉及到的类有RouterFunctionConfiguration、ValidateCodeHandler、ValidateCodeFilter 2. 验证码的实现
2.1. 验证码的获取
定义了获取验证码的路由函数RouterFunction
功能在请求处理阶段请求由DispatcherHandler转发到RouterFunctionMapping再到RouterFunction中定义了处理器HandlerFunction 处理过程Servlet服务器 — DispatcherHandler — handlerMapping列表 — 某个RouterFunctionMapping — 根据RouteFunction到具体的RouteFunction — HandlerFunction — Service — ServiceImpl。 定义了验证码的处理器HandlerFunction
功能关联 RouteFunction 和 ValidateCodeService
定义了一个验证码的配置类CaptchaConfig
启动定义了2个Bean的配置一个是字符验证码一个是数字验证码
如何生成验证码 分2种验证码一种是数字的一种是字符的 1、数字的一个方法用来创建数学结果一个方法用来创建image 2、字符的一个方法用来创建数学结果一个方法用来创建image 3、把数学结果缓存到redis中 返回前端uuid和base64的图片
2.2. 验证码的校验
在nacos配置中心只对auth模块配置了验证码的过滤器 routes:# 认证中心- id: ruoyi-authuri: lb://ruoyi-authpredicates:- Path/auth/**filters:# 验证码处理- CacheRequestFilter- ValidateCodeFilter- StripPrefix1如果路由匹配了predicate的规则则进行filter的处理 疑问如果有多个处理器那么执行顺序是怎么样的。 解答 1、先找到断言处理器的映射规则类RoutePredicateHandlerMapping 2、该类的getHandlerInternal方法中的lookupRoute方法会决定采用哪一个route并设置到request属性中 3、然后是FilteringWebHandler的handler方法 4、handler方法中获取到route的gatewayFilters和全局的globalFilters然后按照order升序排序。 猜测route的gatewayFilters的order属性1,2,3是不是按照配置中心配置排序的。改变下配置中心的配置重新debug观察下。猜测正确 filter的顺序问题
结合gatewayFilters是按照配置文件的顺序order是1,2,3依次递增globalFilters也是按照order的顺序排序。所以对于RuoYi的过滤器来说顺序是
AuthFilter(order-200)
XssFilter(order-100)
CacheRequestFilter(order1)
ValidateCodeFilter(order2)
StripPrefix(order3)3. 总结
1、验证码如何实现 这是用户需要考虑的问题如何实现验证码最好是能配置不同的验证码 RuoYi 实现了“数字验证码”和“字符验证码”2 种。 2、如何与 Spring Gateway 结合 这是架构师需要考虑的框架问题。如何与 Spring Gateway 结合那些模块需要配置这个过滤器那些情况需要验证码 RuoYi 配置了 auth 模块的 【“/auth/login”, “/auth/register”】2 个请求需要验证码。 4. 资料参考
语雀笔记地址https://www.yuque.com/yuchangyuan/tkb5br