diff --git a/yudao-dependencies/pom.xml b/yudao-dependencies/pom.xml index aa96cb86b..19fcceef3 100644 --- a/yudao-dependencies/pom.xml +++ b/yudao-dependencies/pom.xml @@ -41,7 +41,7 @@ 6.8.0 - 0.0.1 + 1.0.0 1.15.3 1.18.24 1.5.3.Final diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java index 8fbb7c0ca..71a02efd4 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java @@ -1,8 +1,11 @@ package cn.iocoder.yudao.module.system.controller.admin.captcha; +import cn.hutool.core.util.StrUtil; +import cn.hutool.extra.servlet.ServletUtil; import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; import com.anji.captcha.model.common.ResponseModel; import com.anji.captcha.model.vo.CaptchaVO; +import com.anji.captcha.service.CaptchaService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.PostMapping; @@ -10,28 +13,31 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.annotation.Resource; import javax.annotation.security.PermitAll; import javax.servlet.http.HttpServletRequest; /** * 验证码 * - * 问题:为什么不直接使用 anji 提供的 CaptchaController,而要另外继承? - * 回答:管理使用 /admin-api/* 作为前缀,所以需要继承! - * * @author 芋道源码 */ @Api(tags = "管理后台 - 验证码") @RestController("adminCaptchaController") @RequestMapping("/system/captcha") -public class CaptchaController extends com.anji.captcha.controller.CaptchaController { +public class CaptchaController { + + @Resource + private CaptchaService captchaService; @PostMapping({"/get"}) @ApiOperation("获得验证码") @PermitAll @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 public ResponseModel get(@RequestBody CaptchaVO data, HttpServletRequest request) { - return super.get(data, request); + assert request.getRemoteHost() != null; + data.setBrowserInfo(getRemoteId(request)); + return captchaService.get(data); } @PostMapping("/check") @@ -39,7 +45,17 @@ public class CaptchaController extends com.anji.captcha.controller.CaptchaContro @PermitAll @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 public ResponseModel check(@RequestBody CaptchaVO data, HttpServletRequest request) { - return super.check(data, request); + data.setBrowserInfo(getRemoteId(request)); + return captchaService.check(data); + } + + public static String getRemoteId(HttpServletRequest request) { + String ip = ServletUtil.getClientIP(request); + String ua = request.getHeader("user-agent"); + if (StrUtil.isNotBlank(ip)) { + return ip + ua; + } + return request.getRemoteAddr() + ua; } }