Commit 860b0301b7bf2c9912d6337b0c9dfaad6e3c4902
1 parent
fffe3008
refactor: captcha-plus
Showing
2 changed files
with
23 additions
and
7 deletions
yudao-dependencies/pom.xml
| @@ -41,7 +41,7 @@ | @@ -41,7 +41,7 @@ | ||
| 41 | <!-- Bpm 工作流相关 --> | 41 | <!-- Bpm 工作流相关 --> |
| 42 | <flowable.version>6.8.0</flowable.version> | 42 | <flowable.version>6.8.0</flowable.version> |
| 43 | <!-- 工具类相关 --> | 43 | <!-- 工具类相关 --> |
| 44 | - <captcha-plus.version>0.0.1</captcha-plus.version> | 44 | + <captcha-plus.version>1.0.0</captcha-plus.version> |
| 45 | <jsoup.version>1.15.3</jsoup.version> | 45 | <jsoup.version>1.15.3</jsoup.version> |
| 46 | <lombok.version>1.18.24</lombok.version> | 46 | <lombok.version>1.18.24</lombok.version> |
| 47 | <mapstruct.version>1.5.3.Final</mapstruct.version> | 47 | <mapstruct.version>1.5.3.Final</mapstruct.version> |
yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/controller/admin/captcha/CaptchaController.java
| 1 | package cn.iocoder.yudao.module.system.controller.admin.captcha; | 1 | package cn.iocoder.yudao.module.system.controller.admin.captcha; |
| 2 | 2 | ||
| 3 | +import cn.hutool.core.util.StrUtil; | ||
| 4 | +import cn.hutool.extra.servlet.ServletUtil; | ||
| 3 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; | 5 | import cn.iocoder.yudao.framework.operatelog.core.annotations.OperateLog; |
| 4 | import com.anji.captcha.model.common.ResponseModel; | 6 | import com.anji.captcha.model.common.ResponseModel; |
| 5 | import com.anji.captcha.model.vo.CaptchaVO; | 7 | import com.anji.captcha.model.vo.CaptchaVO; |
| 8 | +import com.anji.captcha.service.CaptchaService; | ||
| 6 | import io.swagger.annotations.Api; | 9 | import io.swagger.annotations.Api; |
| 7 | import io.swagger.annotations.ApiOperation; | 10 | import io.swagger.annotations.ApiOperation; |
| 8 | import org.springframework.web.bind.annotation.PostMapping; | 11 | import org.springframework.web.bind.annotation.PostMapping; |
| @@ -10,28 +13,31 @@ import org.springframework.web.bind.annotation.RequestBody; | @@ -10,28 +13,31 @@ import org.springframework.web.bind.annotation.RequestBody; | ||
| 10 | import org.springframework.web.bind.annotation.RequestMapping; | 13 | import org.springframework.web.bind.annotation.RequestMapping; |
| 11 | import org.springframework.web.bind.annotation.RestController; | 14 | import org.springframework.web.bind.annotation.RestController; |
| 12 | 15 | ||
| 16 | +import javax.annotation.Resource; | ||
| 13 | import javax.annotation.security.PermitAll; | 17 | import javax.annotation.security.PermitAll; |
| 14 | import javax.servlet.http.HttpServletRequest; | 18 | import javax.servlet.http.HttpServletRequest; |
| 15 | 19 | ||
| 16 | /** | 20 | /** |
| 17 | * 验证码 | 21 | * 验证码 |
| 18 | * | 22 | * |
| 19 | - * 问题:为什么不直接使用 anji 提供的 CaptchaController,而要另外继承? | ||
| 20 | - * 回答:管理使用 /admin-api/* 作为前缀,所以需要继承! | ||
| 21 | - * | ||
| 22 | * @author 芋道源码 | 23 | * @author 芋道源码 |
| 23 | */ | 24 | */ |
| 24 | @Api(tags = "管理后台 - 验证码") | 25 | @Api(tags = "管理后台 - 验证码") |
| 25 | @RestController("adminCaptchaController") | 26 | @RestController("adminCaptchaController") |
| 26 | @RequestMapping("/system/captcha") | 27 | @RequestMapping("/system/captcha") |
| 27 | -public class CaptchaController extends com.anji.captcha.controller.CaptchaController { | 28 | +public class CaptchaController { |
| 29 | + | ||
| 30 | + @Resource | ||
| 31 | + private CaptchaService captchaService; | ||
| 28 | 32 | ||
| 29 | @PostMapping({"/get"}) | 33 | @PostMapping({"/get"}) |
| 30 | @ApiOperation("获得验证码") | 34 | @ApiOperation("获得验证码") |
| 31 | @PermitAll | 35 | @PermitAll |
| 32 | @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 | 36 | @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 |
| 33 | public ResponseModel get(@RequestBody CaptchaVO data, HttpServletRequest request) { | 37 | public ResponseModel get(@RequestBody CaptchaVO data, HttpServletRequest request) { |
| 34 | - return super.get(data, request); | 38 | + assert request.getRemoteHost() != null; |
| 39 | + data.setBrowserInfo(getRemoteId(request)); | ||
| 40 | + return captchaService.get(data); | ||
| 35 | } | 41 | } |
| 36 | 42 | ||
| 37 | @PostMapping("/check") | 43 | @PostMapping("/check") |
| @@ -39,7 +45,17 @@ public class CaptchaController extends com.anji.captcha.controller.CaptchaContro | @@ -39,7 +45,17 @@ public class CaptchaController extends com.anji.captcha.controller.CaptchaContro | ||
| 39 | @PermitAll | 45 | @PermitAll |
| 40 | @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 | 46 | @OperateLog(enable = false) // 避免 Post 请求被记录操作日志 |
| 41 | public ResponseModel check(@RequestBody CaptchaVO data, HttpServletRequest request) { | 47 | public ResponseModel check(@RequestBody CaptchaVO data, HttpServletRequest request) { |
| 42 | - return super.check(data, request); | 48 | + data.setBrowserInfo(getRemoteId(request)); |
| 49 | + return captchaService.check(data); | ||
| 50 | + } | ||
| 51 | + | ||
| 52 | + public static String getRemoteId(HttpServletRequest request) { | ||
| 53 | + String ip = ServletUtil.getClientIP(request); | ||
| 54 | + String ua = request.getHeader("user-agent"); | ||
| 55 | + if (StrUtil.isNotBlank(ip)) { | ||
| 56 | + return ip + ua; | ||
| 57 | + } | ||
| 58 | + return request.getRemoteAddr() + ua; | ||
| 43 | } | 59 | } |
| 44 | 60 | ||
| 45 | } | 61 | } |