Pārlūkot izejas kodu

联通版本加上登录校验

lyhzzz 1 gadu atpakaļ
vecāks
revīzija
5df7c36587

+ 1 - 0
src/main/java/com/fdkankan/manage/common/RedisKeyUtil.java

@@ -17,6 +17,7 @@ public class RedisKeyUtil {
     public static final String ipAddress= "manage:ip_address:%s";
 
     public static final String SCENE_VERSION = "scenejson:num:%s";
+    public static String loginAuthCode = "manage:login:auth:%s";
 
 
 

+ 1 - 0
src/main/java/com/fdkankan/manage/common/ResultCode.java

@@ -106,6 +106,7 @@ public enum ResultCode  {
     RTK_USERNAME_EXIST(50082, "用户名称已存在"),
 
     RTK_USERNAME_TEMPLATE_EMPTY(50083, "批量导入数据为空或账号不存在"),
+    LOGIN_AUTH_NOT_EXIST(50084, "验证码错误"),
     ;
 
     private Integer code;

+ 41 - 0
src/main/java/com/fdkankan/manage/controller/LoginController.java

@@ -1,19 +1,31 @@
 package com.fdkankan.manage.controller;
 
+import cn.hutool.captcha.CaptchaUtil;
+import cn.hutool.captcha.LineCaptcha;
 import cn.hutool.extra.servlet.ServletUtil;
 import com.dtflys.forest.annotation.BaseRequest;
+import com.fdkankan.manage.common.RedisKeyUtil;
+import com.fdkankan.manage.common.ResultCode;
 import com.fdkankan.manage.common.ResultData;
+import com.fdkankan.manage.exception.BusinessException;
 import com.fdkankan.manage.service.impl.ManageService;
 import com.fdkankan.manage.vo.request.ManageLoginRequest;
 import com.fdkankan.redis.util.RedisUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
 /**
  * 登录 登出
  */
 @RestController
 @RequestMapping("/service/manage/")
+@Slf4j
 public class LoginController extends BaseController {
 
 
@@ -25,6 +37,17 @@ public class LoginController extends BaseController {
      */
     @PostMapping("/login")
     public ResultData login(@RequestBody ManageLoginRequest param) {
+        if(StringUtils.isBlank(param.getAuthCode())){
+            throw new BusinessException(ResultCode.MISSING_REQUIRED_PARAMETERS);
+        }
+        String id = request.getSession().getId();
+        if(!redisUtil.hasKey(String.format(RedisKeyUtil.loginAuthCode,id))){
+            throw new BusinessException(ResultCode.LOGIN_AUTH_NOT_EXIST);
+        }
+        if(!redisUtil.get(String.format(RedisKeyUtil.loginAuthCode,id)).equals(param.getAuthCode())){
+            throw new BusinessException(ResultCode.LOGIN_AUTH_NOT_EXIST);
+        }
+
         String clientIP = ServletUtil.getClientIP(request);
         return ResultData.ok(manageService.login(clientIP,param.getUserName(),param.getPassword()));
     }
@@ -36,5 +59,23 @@ public class LoginController extends BaseController {
         manageService.logout();
         return ResultData.ok();
     }
+    @Autowired
+    RedisUtil redisUtil;
+
+    @GetMapping("/getLoginAuthCode")
+    public void  getLoginCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
+        response.setHeader("Cache-Control", "no-store, no-cache");
+        response.setContentType("image/jpeg");
+        String id = request.getSession().getId();
+        try {
+            LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100,4,60);
+            redisUtil.set(String.format(RedisKeyUtil.loginAuthCode,id),lineCaptcha.getCode(),60*5);
+            lineCaptcha.write(response.getOutputStream());
+            response.getOutputStream().close();
+        } catch (Exception e){
+            log.info("生成登录验证码错误:",e);
+        }
+
+    }
 
 }

+ 1 - 1
src/main/java/com/fdkankan/manage/exception/GlobalExceptionHandler.java

@@ -24,7 +24,7 @@ public class GlobalExceptionHandler {
     @ExceptionHandler(value = Exception.class)
     public ResultData exceptionHandler(Exception e) throws Exception {
         log.error("服务错误:", e);
-        return ResultData.error( 500, e.getCause().getMessage());
+        return ResultData.error( 500, "系统错误");
     }
 
     /**

+ 1 - 0
src/main/java/com/fdkankan/manage/vo/request/ManageLoginRequest.java

@@ -6,4 +6,5 @@ import lombok.Data;
 public class ManageLoginRequest {
     private String userName;
     private String password;
+    private String authCode;
 }