From e34576cd19db18891cef039e53bf9cef660403af Mon Sep 17 00:00:00 2001
From: liuhaonan <konodioda2333@vip.qq.com>
Date: 星期一, 25 四月 2022 14:05:40 +0800
Subject: [PATCH] 验证码实现
---
ximon-admin/src/main/java/com/sandu/ximon/admin/security/authcode/VerifyCodeController.java | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 50 insertions(+), 6 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/authcode/VerifyCodeController.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/authcode/VerifyCodeController.java
index 190b624..dfc6e23 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/authcode/VerifyCodeController.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/authcode/VerifyCodeController.java
@@ -1,17 +1,24 @@
package com.sandu.ximon.admin.security.authcode;
+import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
+import sun.misc.BASE64Encoder;
+import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
+import java.io.ByteArrayOutputStream;
import java.io.IOException;
+import java.util.Base64;
+import java.util.HashMap;
import java.util.Map;
/**
@@ -24,34 +31,71 @@
@RequestMapping("/v1/authcode")
public class VerifyCodeController {
+ private final Snowflake snowflake;
@RequestMapping("/getImg")
@ResponseBody
- public void getVerifiCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
+ public Map getVerifiCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
/*
1.鐢熸垚楠岃瘉鐮�
2.鎶婇獙璇佺爜涓婄殑鏂囨湰瀛樺湪session涓�
3.鎶婇獙璇佺爜鍥剧墖鍙戦�佺粰瀹㈡埛绔�
*/
+ long key = snowflake.nextId();
ImageVerificationCode ivc = new ImageVerificationCode(); //鐢ㄦ垜浠殑楠岃瘉鐮佺被锛岀敓鎴愰獙璇佺爜绫诲璞�
BufferedImage image = ivc.getImage(); //鑾峰彇楠岃瘉鐮�
- request.getSession().setAttribute("text", ivc.getText()); //灏嗛獙璇佺爜鐨勬枃鏈瓨鍦╯ession涓�
- ImageVerificationCode.output(image, response.getOutputStream());//灏嗛獙璇佺爜鍥剧墖鍝嶅簲缁欏鎴风
+
+// ByteArrayOutputStream baos = new ByteArrayOutputStream();//io娴�
+// ImageIO.write(image, "JPEG", baos);//鍐欏叆娴佷腑
+// byte[] bytes = baos.toByteArray();//杞崲鎴愬瓧鑺�
+// BASE64Encoder encoder = new BASE64Encoder();
+// String png_base64 = encoder.encodeBuffer(bytes).trim();//杞崲鎴恇ase64涓�
+// png_base64 = png_base64.replaceAll("\n", "").replaceAll("\r", "");//鍒犻櫎 \r\n
+
+ // ImageIO.write(bufferedImage, "png", new File("D:/qrcode1.png"));
+// System.out.println("鍊间负锛�"+"data:image/jpg;base64,"+png_base64);
+ request.getSession().setAttribute(key+"", ivc.getText()); //灏嗛獙璇佺爜鐨勬枃鏈瓨鍦╯ession涓�
+// ImageVerificationCode.output(image, response.getOutputStream());//灏嗛獙璇佺爜鍥剧墖鍝嶅簲缁欏鎴风
+ String img = getBufferedImageToBase64(image, "JPEG");
+ String session_vcode = (String) request.getSession().getAttribute(key+"");
+ Map map = new HashMap();
+// map.put("img", "data:image/jpg;base64,"+png_base64);
+ map.put("img", img);
+ map.put("vlue", session_vcode);
+ map.put("key", key);
+ return map;
}
- @RequestMapping("/Login_authentication")
+ @RequestMapping("/Login_authentication/{key}")
@ResponseBody
- public String Login_authentication(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
+ public String Login_authentication(HttpServletRequest request, HttpServletResponse response,@PathVariable String key) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
// String vcode = (String)map.get("session_vcode");
// if(vcode.isEmpty()||vcode==null){
// return "楠岃瘉鐮佷笉鑳戒负绌�";
// }
- String session_vcode = (String) request.getSession().getAttribute("text"); //浠巗ession涓幏鍙栫湡姝g殑楠岃瘉鐮�
+ String session_vcode = (String) request.getSession().getAttribute(key); //浠巗ession涓幏鍙栫湡姝g殑楠岃瘉鐮�
//姣旇緝杈撳叆鐨勯獙璇佺爜鍜岀湡姝g殑楠岃瘉鐮�
// if(StrUtil.equalsIgnoreCase(session_vcode, vcode)){
// return "true";
// }
return session_vcode;
}
+
+ /**
+ * BufferedImage杞垚 base64
+ * @param bufferedImage
+ * @param imageFormatName
+ * @return
+ * @throws IOException
+ */
+ public static String getBufferedImageToBase64(BufferedImage bufferedImage,String imageFormatName) throws IOException {
+ if(StringUtils.isBlank(imageFormatName)){
+ imageFormatName = "JPEG";
+ }
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ImageIO.write(bufferedImage, imageFormatName, stream);
+ String s = Base64.getEncoder().encodeToString(stream.toByteArray());
+ return s;
+ }
}
--
Gitblit v1.9.3