RuoYi-Cloud 验证码处理流程

以该处理流程去拓展其他功能模块处理流程,进而熟悉项目开发代码

一、思路

JavaWeb流程主干线:发起请求、处理请求、响应请求

二、登录页面

在登录页面按键F12打开开发者工具,点击network,刷新页面,点击code,查看URL

三、前端

查看前端 代码,找到登录页面

src -> views -> login.vue

data 数据

watch 监听

created 钩子函数 getCode getCodeImg

login.js

函数url /code

request

request.js

service

axios 异步发送请求 baseurl请求前缀

开发环境 env.development

/dev-api

没有localhost,相对请求,前端发出的 localhost:80

前端发送请求

http://localhost/dev-api/code

http://localhost:80/dev-api/code

但是后端是8080端口

找网关相关的代码

后端 ruoyi-gateway

nacos ruoyi-gateway-dev.yml

bootstrap.yml 后端8080

回忆 前后端分离 接口处理

vue.config.js

devServer

proxy 代理对象

匹配dev-api,在/dev-api前加上localhost:8080,将/dev-api并替换为空,

具体解析过程:

http://localhost/dev-api/code ->

http://localhost:8080/dev-api/code ->

http://localhost:8080/code

所以前端向后端发送请求http://localhost:8080/code

四、后端

前端请求进入网关查找对应的微服务,可查看nacos网关配置文件

nacos gateway routes

ruoyi-gateway-dev.yml

不是code开头,不是#代码生成#模块,

code是代码请求

ignore 没有

所以没有进入到gateway下的子服务,只能从ruoyi-gateway中查找

但是ruoyi-gateway 没有controller

特殊情况find in files

/code

RouterFunctionConfiguration

函数式的接口 webflux
大模型解释代码

bash 复制代码
代码功能
这段代码使用 Spring WebFlux 框架定义了一个路由规则,用于处理 HTTP 请求。它的核心作用是:

当客户端发起特定格式的 GET 请求时,执行指定的处理逻辑(validateCodeHandler)来生成响应

# 匹配 HTTP 请求并将其转发给对应的处理函数
RouterFunctions.route(...)

# 只有当请求是 GET /code 且客户端接受 text/plain 格式时,才会触发后续的处理逻辑
RequestPredicates.GET("/code").and(RequestPredicates.accept(MediaType.TEXT_PLAIN))

# 处理函数
validateCodeHandler

validateCodeHandler

redisservice

uuid

img

逐层返回前端

五、请求闭环

可根据uuid在redis中查找验证码

输入验证码 -> 登录流程

相关推荐
lulu12165440783 分钟前
大模型API聚合平台技术架构深度对比:六大平台协议转换、路由调度与安全治理全解析 - 微元算力(weytoken)
java·人工智能·安全·架构·ai编程
可乐ea6 分钟前
【Spring Boot + MyBatis|第4篇】MyBatis 动态 SQL:if、where、foreach 使用详解
java·spring boot·后端·sql·mybatis
記億揺晃着的那天13 分钟前
Windows 通过 Java 获取可用端口的一个坑:Hyper-V 保留端口导致 UDP 绑定失败
java·windows·udp
组合缺一14 分钟前
SolonCode(编码智能体)支持鸿蒙 PC
java·华为·ai·ai编程·harmonyos·solon·soloncode
小bo波15 分钟前
用匿名内部类优雅地计算方法执行时间
java·设计模式·性能测试·模板方法模式·lambda·代码优化·匿名内部类
折哥的程序人生 · 物流技术专研20 分钟前
Tomcat 严重警告:JDBC 驱动未注销 + 工作线程泄漏 —— 原因、影响与彻底修复(生产级终极指南)
java·运维·数据库·mysql·oracle·tomcat
一个儒雅随和的男子23 分钟前
sentinel底层原理剖析以及实战优化
java·网络·sentinel
两年半的个人练习生^_^29 分钟前
JMM 进阶:彻底理解 synchronized 实现原理
java·开发语言
戳代码的新星36 分钟前
论小白如何学会使用Maven
java·maven
wyhwust36 分钟前
maven的安装和配置
java