Skip to content

问题

如何关闭验证码登录验证?包括 Web 前端、App 前端、后端。比如后端开启验证则 Web 和 App 都生效;如果只想 Web 生效,是否只需要配置 Web 前端?

答案

登录验证码是两层独立控制:后端 yudao.captcha.enable 决定登录接口是否强制校验(全局,Web 与 App 共用);各端 VITE_APP_CAPTCHA_ENABLE 仅决定是否弹出滑块 UI。后端开启时所有终端都会受校验约束;「Web 有滑块、App 免验证」需 后端 false + Web true + App false

详细说明

1. 两层架构

层级配置项作用范围控制什么
后端yudao.captcha.enable全局(Web + App 共用登录接口)登录/注册是否校验 captchaVerification
Web 前端VITE_APP_CAPTCHA_ENABLE仅 PC 管理端是否弹出滑块、是否调用 /system/captcha/get
App 前端VITE_APP_CAPTCHA_ENABLE仅 UniApp(H5/小程序/App)同上

2. 后端配置(全局强制校验)

yaml
yudao:
  captcha:
    enable: true   # true=强制校验,false=跳过(默认 true)
部署模式配置文件
单体(-P bootruoyi-office/yudao-server/src/main/resources/application-{profile}.yaml
微服务system 模块或 Nacos;未配置时默认 true

项目内常见 profile 值:

Profile典型值说明
local / devfalse本地联调,不校验
prodfalse(演示站)Web 可展示滑块,App 可无滑块登录
未显式配置true代码默认值

核心逻辑:AdminAuthServiceImpl.doValidateCaptcha() — 当 captchaEnable=false 时直接返回成功,不再校验 captchaVerification

修改后需重启后端。

注意:aj.captcha.*(底图、水印、类型等)是 AjCaptcha 引擎参数,不是开关。详见 登录滑块验证码-底图与水印位置

3. Web 前端配置(PC 管理端)

bash
VITE_APP_CAPTCHA_ENABLE=true   # 字符串 'true' 才开启
VITE_APP_CAPTCHA_ENABLE=false  # 关闭

web-antd 为例:

文件典型值用途
.envtrue基础默认
.env.developmentfalse本地 dev,不弹滑块
.env.productiontrue生产构建

判断:packages/effects/hooks/src/use-app-config.tsisCaptchaEnable()

登录页(apps/web-antd/src/views/_core/authentication/login.vue):开启时先弹滑块,通过后带 captchaVerification 登录;关闭时直接登录。同样影响注册、社交登录页。

修改 .env* 后需重启 dev 或重新构建(该开关不走运行时 _app.config.js)。

4. App 前端配置(UniApp)

bash
# ruoyi-office-uniapp/env/.env
VITE_APP_CAPTCHA_ENABLE=false

登录页(src/pages-core/auth/login.vue):false 时跳过滑块直接调登录接口;true 时先展示滑块组件。同样影响 register.vuecode-login.vue

修改后需重新编译/打包各端。

5. 常见组合效果

后端WebApp实际效果
✅ true✅ true✅ true标准生产:全端弹滑块 + 后端校验
✅ true✅ true❌ falseWeb 正常;App 无滑块会被后端拒绝
✅ true❌ false❌ false全端不弹滑块,登录失败
❌ false✅ true❌ false演示常用:Web 有滑块体验,App 直接登录
❌ false❌ false❌ false全关:开发/联调最省事

6. 「只想 Web 生效」怎么理解

  1. 只想 Web 弹出滑块(App 不要) → Web true + App false;若 App 也要能登录,后端须 enable: false
  2. 只想 Web 强制校验、App 不校验当前架构不支持。后端是全局开关,无法按终端区分。

application-prod.yaml 注释说明:

yaml
# 后端验证码开关为【全局】,不区分终端。关闭后 web 仍会弹滑块(由前端 VITE_APP_CAPTCHA_ENABLE=true 控制,仅 UI 展示),
# 但后端不再强制校验登录验证码,从而让无滑块组件的移动端(uniapp App/H5/小程序)也能正常登录。
yudao:
  captcha:
    enable: false

7. 推荐配置场景

本地开发(全关)

  • 后端 application-local.yaml / application-dev.yamlyudao.captcha.enable: false
  • Web .env.developmentVITE_APP_CAPTCHA_ENABLE=false
  • App env/.envVITE_APP_CAPTCHA_ENABLE=false

生产(全端真实校验)

  • 后端 enable: true
  • Web .env.productiontrue
  • App env/.env.productiontrue

演示站(Web 有滑块,App 简化)

  • 后端 enable: false
  • Web true,App false

8. 其他说明

  • 重置密码发短信:后端 enable=true 时,重置密码场景仍会校验图形验证码(与登录前端开关无关)。
  • GoView 大屏:同样使用 VITE_APP_CAPTCHA_ENABLE

涉及代码 / 配置

路径
后端开关yudao-module-system-server/.../AdminAuthServiceImpl.java
后端配置yudao-server/src/main/resources/application-{profile}.yaml
Web 判断ruoyi-office-vben/packages/effects/hooks/src/use-app-config.ts
Web 登录ruoyi-office-vben/apps/web-antd/src/views/_core/authentication/login.vue
App 登录ruoyi-office-uniapp/src/pages-core/auth/login.vue
验证码接口POST /admin-api/system/captcha/get/check

相关链接

修订记录

日期修改
2026-06-09初稿,归纳后端与 Web/App 验证码开关及组合效果
联系我们

获取报价、演示和二开方案

微信咨询二维码

微信咨询

17156169080

添加时备注「RuoYi Office」

在线体验商业版