- 在 SecurityConfig 的 permitAll 白名单中添加 `/api/sendSmsCaptchaByAdmin` - 解决该接口因未登录被拦截导致返回 401 的问题 - 确保管理员手机号校验逻辑不受影响,接口可正常发送验证码 - 方便通过代理路径 `/api/_server/sendSmsCaptchaByAdmin` 访问接口 - 修复线上调用失败问题,保证服务正常可用
1.4 KiB
1.4 KiB
2026-07-23 工作记录
短信验证码接口 sendSmsCaptchaByAdmin 发送失败排查
- 现象:线上
https://site.websoft.top/api/_server/sendSmsCaptchaByAdmin调用手机 15678895934 失败,返回401 请先登录。 - 根因:
com/gxwebsoft/common/core/security/SecurityConfig.java的permitAll白名单里只有/api/sendSmsCaptcha、/api/sendEmailCaptcha,没有/api/sendSmsCaptchaByAdmin。该接口被 Spring Security 拦截,未登录请求直接 401,控制器逻辑未执行,验证码未发出。 - 已修复:在 SecurityConfig 的 permitAll antMatchers 中加入
/api/sendSmsCaptchaByAdmin(位于/api/sendSmsCaptcha之后)。 - 说明:接口内部已有
getByPhoneAndAdmin管理员手机号校验,开放 permitAll 安全;线上代理前缀为/api/_server/**,转发到后端/api/**。 - 验证方式:用 curl 直接打
/api/_server/sendSmsCaptchaByAdmin复现 401;同前缀的/api/sendSmsCaptcha因在白名单可正常进入(需确认部署后 ByAdmin 不再 401)。
关键文件
- SecurityConfig.java:
com/gxwebsoft/common/core/security/SecurityConfig.java - MainController.sendSmsCaptchaByAdmin:
com/gxwebsoft/common/system/controller/MainController.java:656 - 管理员校验 SQL:
UserMapper.xml selectAdminByPhoneCrossTenant(sys_user.deleted=0 AND phone=? AND (is_super_admin=1 OR is_admin=1))