From 03ec5826348fe924243eb797559aef91afa98086 Mon Sep 17 00:00:00 2001
From: 刘小明 <liuxm_a@163.com>
Date: 星期一, 24 六月 2024 17:29:23 +0800
Subject: [PATCH] 记录组装各步骤
---
pms-parent/pms-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java | 91 +++++++++++++++++++++++++++++++++++++++------
1 files changed, 79 insertions(+), 12 deletions(-)
diff --git a/pms-parent/pms-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java b/pms-parent/pms-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
index 79eb195..87b1084 100644
--- a/pms-parent/pms-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
+++ b/pms-parent/pms-web-sso/src/main/java/com/dy/sso/busi/SsoCtrl.java
@@ -4,17 +4,22 @@
import com.dy.common.util.MD5;
import com.dy.common.webUtil.BaseResponse;
import com.dy.common.webUtil.BaseResponseUtils;
+import com.dy.pmsGlobal.aop.Log;
import com.dy.pmsGlobal.pojoBa.BaUser;
import com.mysql.cj.util.StringUtils;
import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
import jakarta.validation.Valid;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;
-import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;
-import java.util.Objects;
+import javax.imageio.ImageIO;
+import java.awt.*;
+import java.awt.image.BufferedImage;
+import java.io.IOException;
import java.util.UUID;
/**
@@ -41,28 +46,40 @@
/**
* 瀹㈡埛绔姹傜敤鎴风櫥褰曪紝瀹㈡埛绔彁浜son鏁版嵁
* @param vo 鐢ㄦ埛鐧诲綍鍊煎璞�
- * @param bindingResult 杈撳叆楠岃瘉
* @return 鐧诲綍鐢ㄦ埛鍊煎璞�
*/
@PostMapping(path = "login", consumes = MediaType.APPLICATION_JSON_VALUE)//鍓嶇鎻愪氦json鏁版嵁
- public BaseResponse<UserVo> login(@RequestBody @Valid LoginVo vo, BindingResult bindingResult) {
- if(bindingResult != null && bindingResult.hasErrors()){
- return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ @Log("鐢ㄦ埛鐧诲綍")
+ public BaseResponse<UserVo> login(@RequestBody @Valid LoginVo vo,HttpSession session) {
+ // 浠嶴ession涓幏鍙栦繚瀛樼殑楠岃瘉鐮�
+ String sessionCaptcha = (String) session.getAttribute("captcha");
+ // 棣栧厛楠岃瘉楠岃瘉鐮�
+ if (vo.captcha != null && vo.captcha.equalsIgnoreCase(sessionCaptcha)) {
+ session.removeAttribute("captcha");
+ return this.doLogin(vo) ;
+ } else {
+ // 楠岃瘉鐮侀敊璇紝杩斿洖鐧诲綍椤甸潰骞舵樉绀洪敊璇俊鎭�
+ return BaseResponseUtils.buildFail("楠岃瘉鐮侀敊璇�");
}
- return this.doLogin(vo) ;
}
/**
* 瀹㈡埛绔姹傜敤鎴风櫥褰曪紝瀹㈡埛绔彁浜orm琛ㄥ崟
- * @param vo 鐧诲綍鐢ㄦ埛form琛ㄥ崟瀵硅薄
+ * @param loginVo 鐧诲綍鐢ㄦ埛form琛ㄥ崟瀵硅薄
* @return 鐧诲綍鐢ㄦ埛鍊煎璞�
*/
@PostMapping(path = "loginForm", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)//鍓嶇鎻愪氦form琛ㄥ崟鏁版嵁
- public BaseResponse<UserVo> loginForm(@RequestBody @Valid LoginVo vo, BindingResult bindingResult){
- if(bindingResult != null && bindingResult.hasErrors()){
- return BaseResponseUtils.buildFail(Objects.requireNonNull(bindingResult.getFieldError()).getDefaultMessage());
+ public BaseResponse<UserVo> loginForm(@Valid LoginVo loginVo,HttpSession session){
+ // 浠嶴ession涓幏鍙栦繚瀛樼殑楠岃瘉鐮�
+ String sessionCaptcha = (String) session.getAttribute("captcha");
+ // 棣栧厛楠岃瘉楠岃瘉鐮�
+ if (loginVo.captcha != null && loginVo.captcha.equalsIgnoreCase(sessionCaptcha)) {
+ session.removeAttribute("captcha");
+ return this.doLogin(loginVo) ;
+ } else {
+ // 楠岃瘉鐮侀敊璇紝杩斿洖鐧诲綍椤甸潰骞舵樉绀洪敊璇俊鎭�
+ return BaseResponseUtils.buildFail("楠岃瘉鐮侀敊璇�");
}
- return this.doLogin(vo) ;
}
@@ -72,6 +89,7 @@
* @return 姝e父閫�鍑虹櫥褰曡繑鍥瀟rue锛屽惁鍒欒繑鍥瀎alse
*/
@GetMapping(path = "logout")
+ @Log("閫�鍑虹櫥褰�")
public BaseResponse<Boolean> logout(HttpServletRequest hr){
String token = hr.getHeader("token") ;
if(token != null){
@@ -81,6 +99,8 @@
return BaseResponseUtils.buildFail("鏈粠header涓緱鍒皌oken");
}
}
+
+
/**
* 姝ゆ柟娉曚緵瀛愭ā鍧楃郴缁熻皟鐢紝鎵�浠ヤ笉鍏紑鍦ˋPI鎺ュ彛涓�
@@ -168,11 +188,58 @@
}
return vo ;
}
+
+ /**
+ * 鐢熸垚鐧诲綍楠岃瘉鐮�
+ * @param response
+ * @param session
+ * @throws IOException
+ */
+ @GetMapping("/captcha")
+ public void captcha(HttpServletResponse response, HttpSession session) throws IOException {
+ // 璁剧疆鍝嶅簲鐨勭被鍨嬫牸寮忎负鍥剧墖鏍煎紡
+ response.setContentType("image/jpeg");
+ // 绂佹鍥惧儚缂撳瓨
+ response.setHeader("Pragma", "no-cache");
+ response.setHeader("Cache-Control", "no-cache");
+ response.setDateHeader("Expires", 0);
+
+ int width = 100, height = 50;
+ BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
+ Graphics g = image.getGraphics();
+ // 璁惧畾鑳屾櫙鑹�
+ g.setColor(Color.WHITE);
+ g.fillRect(0, 0, width, height);
+ // 璁惧畾瀛椾綋
+ g.setFont(new Font("Arial", Font.BOLD, 30));
+ // 闅忔満鐢熸垚楠岃瘉鐮�
+ String captcha = generateCaptcha();
+ // 灏嗛獙璇佺爜瀛樺叆Session
+ session.setAttribute("captcha", captcha);
+ // 鍦ㄥ浘鐗囦笂缁樺埗楠岃瘉鐮�
+ g.setColor(Color.BLACK);
+ g.drawString(captcha, 15, 35);
+ g.dispose();
+ // 杈撳嚭鍥剧墖
+ ImageIO.write(image, "JPEG", response.getOutputStream());
+ }
+
+
/////////////////////////////////////////////////////////////////
//
// 浠ヤ笅绉佹湁鏂规硶
//
/////////////////////////////////////////////////////////////////
+
+ /**
+ * 鐢熸垚鍥涗綅闅忔満鏁�
+ * @return
+ */
+ private String generateCaptcha() {
+// Random r = new Random();
+// return r.nextInt(9000) + 1000 + "";
+ return "1234";
+ }
/**
* 鐢ㄦ埛鐧诲綍
* @param vo 鐧诲綍鐢ㄦ埛form琛ㄥ崟瀵硅薄
--
Gitblit v1.8.0