From d33fc7f1df66c1e451c5d79ab59a5bc9dce4e496 Mon Sep 17 00:00:00 2001 From: Tomas <tomasysh@gmail.com> Date: 星期四, 14 九月 2023 18:01:18 +0800 Subject: [PATCH] Update: http 攔截器,檢查 base url 的檢查 method --- pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java | 31 ++++++++++++++++++++++++++++--- 1 files changed, 28 insertions(+), 3 deletions(-) diff --git a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java index 3cad8c3..609f1f1 100644 --- a/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java +++ b/pamapi/src/main/java/com/pollex/pam/web/rest/OtpResource.java @@ -3,6 +3,9 @@ import java.util.Arrays; import java.util.UUID; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpSession; + import com.pollex.pam.business.aop.logging.audit.AuditLoggingInject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -11,6 +14,8 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.util.StringUtils; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; @@ -29,6 +34,7 @@ import com.pollex.pam.service.OtpWebService; import com.pollex.pam.business.service.dto.CustomerRegisterDTO; import com.pollex.pam.business.service.dto.OtpResponseDTO; +import com.pollex.pam.business.web.errors.OtpLoginFailException; import com.pollex.pam.business.web.vm.OtpLoginVM; import com.pollex.pam.business.web.vm.VerifyOtpVM; @@ -67,8 +73,24 @@ @Autowired CustomerRepository customerRepository; - @PostMapping("/sendOtp") - public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login) { + @PostMapping("/sendOtp/{imgCode}") + public ResponseEntity<Object> sendOtp(@RequestBody OtpLoginVM login + , @PathVariable String imgCode, HttpServletRequest request) { + + HttpSession session = request.getSession(); + String sessionImpCode = (String) session.getAttribute("img_code"); + + if (!StringUtils.hasText(sessionImpCode) + || !StringUtils.hasText(imgCode)) { + throw new OtpLoginFailException("撽�Ⅳ頛詨�隤�"); + } + + if(!imgCode.equals(sessionImpCode)) { + throw new OtpLoginFailException("撽�Ⅳ頛詨�隤�"); + } + + session.setAttribute("img_code", null); + OtpResponseDTO otpResponse; if(applicationProperty.isMockLogin()) { otpResponse = getMockSendOtpResponse(); @@ -81,12 +103,15 @@ return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("can not support this login type, loginType = " + login.getLoginType().name()); } otpTmpService.createOtpTmp(login.getAccount(), otpResponse.getIndexKey()); + return new ResponseEntity<>(otpResponse, HttpStatus.OK); } @AuditLoggingInject(type = CUSTOMER_LOGIN) @PostMapping("/verify") - public ResponseEntity<UserJWTController.JWTToken> verifyOtp(@RequestBody VerifyOtpVM verifyOtpParam) { + public ResponseEntity<UserJWTController.JWTToken> verifyOtp(@RequestBody VerifyOtpVM verifyOtpParam + ) { + otpUtilService.verifyOtp(verifyOtpParam); Customer customer = customerRepository -- Gitblit v1.8.0