Jelajahi Sumber

优化学生端登陆图形验证码

zouxuan 3 tahun lalu
induk
melakukan
78f7bec96b

+ 5 - 0
mec-student/pom.xml

@@ -52,6 +52,11 @@
 			<artifactId>kaptcha</artifactId>
 			<version>2.3.2</version>
 		</dependency>
+		<dependency>
+			<groupId>com.github.whvcse</groupId>
+			<artifactId>easy-captcha</artifactId>
+			<version>1.6.2</version>
+		</dependency>
 
 		<dependency>
 			<groupId>com.ym</groupId>

+ 44 - 28
mec-student/src/main/java/com/ym/mec/student/controller/SmsCodeController.java

@@ -3,6 +3,9 @@ package com.ym.mec.student.controller;
 import com.google.code.kaptcha.Constants;
 import com.google.code.kaptcha.Producer;
 import com.google.code.kaptcha.servlet.KaptchaServlet;
+import com.wf.captcha.GifCaptcha;
+import com.wf.captcha.SpecCaptcha;
+import com.wf.captcha.utils.CaptchaUtil;
 import com.ym.mec.biz.dal.entity.CourseSchedule;
 import com.ym.mec.biz.service.SmsCodeService;
 import com.ym.mec.common.controller.BaseController;
@@ -22,6 +25,7 @@ import org.springframework.web.bind.annotation.RestController;
 
 import javax.imageio.ImageIO;
 import javax.servlet.ServletOutputStream;
+import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.awt.image.BufferedImage;
 import java.util.concurrent.TimeUnit;
@@ -77,38 +81,50 @@ public class SmsCodeController extends BaseController {
         return failed(SecurityConstants.VERIFY_FAILURE);
     }
 
-    @GetMapping(value = "/getLoginImage")
+    @RequestMapping("/getLoginImage")
     @ApiOperation("获取登录图片验证码")
     @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String")
-    public void getKaptchaImage(HttpServletResponse response,String phone) throws Exception {
+    public void getLoginImage(HttpServletRequest request, HttpServletResponse response,String phone) throws Exception {
         if(StringUtils.isEmpty(phone)){
             throw new BizException("请输入手机号");
         }
-        response.setDateHeader("Expires", 0);
-
-        // Set standard HTTP/1.1 no-cache headers.
-        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
-        // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
-        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
-        // Set standard HTTP/1.0 no-cache header.
-        response.setHeader("Pragma", "no-cache");
-        // return a jpeg
-        response.setContentType("image/jpeg");
-        // create the text for the image
-        String capText = captchaProducer.createText();
-
-        redisTemplate.opsForValue().set(Constants.KAPTCHA_SESSION_KEY + phone,capText,3, TimeUnit.MINUTES);
-        // create the image with the text
-        BufferedImage bi = captchaProducer.createImage(capText);
-        KaptchaServlet kaptchaServlet = new KaptchaServlet();
-        kaptchaServlet.init();
-        ServletOutputStream out = response.getOutputStream();
-        // write the data out
-        try {
-            ImageIO.write(bi, "jpg", out);
-            out.flush();
-        } finally {
-            out.close();
-        }
+        SpecCaptcha specCaptcha = new SpecCaptcha(125, 45, 5);
+        redisTemplate.opsForValue().set(Constants.KAPTCHA_SESSION_KEY + phone,specCaptcha.text(),3, TimeUnit.MINUTES);
+        CaptchaUtil.out(specCaptcha, request, response);
     }
+
+//    @GetMapping(value = "/getLoginImage")
+//    @ApiOperation("获取登录图片验证码")
+//    @ApiImplicitParam(name = "phone", value = "手机号", required = true, dataType = "String")
+//    public void getKaptchaImage(HttpServletResponse response,String phone) throws Exception {
+//        if(StringUtils.isEmpty(phone)){
+//            throw new BizException("请输入手机号");
+//        }
+//        response.setDateHeader("Expires", 0);
+//
+//        // Set standard HTTP/1.1 no-cache headers.
+//        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
+//        // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
+//        response.addHeader("Cache-Control", "post-check=0, pre-check=0");
+//        // Set standard HTTP/1.0 no-cache header.
+//        response.setHeader("Pragma", "no-cache");
+//        // return a jpeg
+//        response.setContentType("image/jpeg");
+//        // create the text for the image
+//        String capText = captchaProducer.createText();
+//
+//        redisTemplate.opsForValue().set(Constants.KAPTCHA_SESSION_KEY + phone,capText,3, TimeUnit.MINUTES);
+//        // create the image with the text
+//        BufferedImage bi = captchaProducer.createImage(capText);
+//        KaptchaServlet kaptchaServlet = new KaptchaServlet();
+//        kaptchaServlet.init();
+//        ServletOutputStream out = response.getOutputStream();
+//        // write the data out
+//        try {
+//            ImageIO.write(bi, "jpg", out);
+//            out.flush();
+//        } finally {
+//            out.close();
+//        }
+//    }
 }