Browse Source

valid login

huodongdong 7 years ago
parent
commit
5913d3072d

+ 49 - 0
rankin-api-web/src/main/java/cn/rankin/apiweb/configuration/GlobalExceptionHandler.java

@@ -0,0 +1,49 @@
+package cn.rankin.apiweb.configuration;
+
+import cn.rankin.common.utils.api.model.APICode;
+import cn.rankin.common.utils.api.model.APIResult;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.ControllerAdvice;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+import org.springframework.web.servlet.NoHandlerFoundException;
+
+import javax.servlet.http.HttpServletRequest;
+import java.nio.file.AccessDeniedException;
+
+@RestController
+@ControllerAdvice
+public class GlobalExceptionHandler {
+    private Logger logger = LoggerFactory.getLogger(GlobalExceptionHandler.class);
+
+    /**
+     * 系统异常处理,比如:404,500
+     * @param request
+     * @param e
+     * @return
+     * @throws Exception
+     */
+    @ExceptionHandler(value = Exception.class)
+    @ResponseBody
+    public APIResult defaultErrorHandler(HttpServletRequest request, Exception e) throws Exception {
+        logger.error("{}", e);
+
+        APIResult apiResult = new APIResult();
+        apiResult.setMessage(e.getMessage());
+        apiResult.setSuccess(false);
+
+        if (e instanceof NoHandlerFoundException) {
+            apiResult.setCode(APICode._C_NOT_FOUND);
+        }else if (e instanceof AccessDeniedException){
+            apiResult.setCode(APICode._C_ACCESS_DENIED);
+        }else if (e instanceof MethodArgumentTypeMismatchException){
+            apiResult.setCode(400);
+        }else {
+            apiResult.setCode(500);
+        }
+        return apiResult;
+    }
+}

+ 2 - 1
rankin-api-web/src/main/java/cn/rankin/apiweb/controller/LoginController.java

@@ -15,6 +15,7 @@ import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.servlet.http.HttpServletRequest;
+import javax.validation.Valid;
 
 @RestController
 @RequestMapping(value = "/token")
@@ -24,7 +25,7 @@ public class LoginController {
     private UserService userService;
 
     @RequestMapping(method = RequestMethod.POST)
-    public APIResult<UserInfoVo> login(HttpServletRequest request, @RequestBody LoginInfoDTO loginInfoDTO) {
+    public APIResult<UserInfoVo> login(HttpServletRequest request, @Valid @RequestBody LoginInfoDTO loginInfoDTO) {
         String ip = HttpUtil.getClientIp(request);
         loginInfoDTO.setIp(ip);
         return userService.login(loginInfoDTO);

+ 5 - 5
rankin-api-web/src/main/java/cn/rankin/apiweb/intercepter/RequestSignatureInterceptor.java

@@ -64,7 +64,7 @@ public class RequestSignatureInterceptor implements HandlerInterceptor {
 
         //登录请求不拦截
         String path = request.getServletPath();
-        if (ignorePaths.contains(path)) {
+        if (ignorePaths.contains(path) && request.getMethod().equals(HttpMethod.POST)) {
             logger.info("url: {} do not intercepted!");
             return true;
         }
@@ -74,10 +74,10 @@ public class RequestSignatureInterceptor implements HandlerInterceptor {
 
         String uid = headers.getUid();
         String sign = headers.getSign();
-//        if (StringUtils.isEmpty(uid) || StringUtils.isEmpty(sign)) {
-//            writeResponse(request, response, ApiWebCode.HEADER_ERROR);
-//            return false;
-//        }
+        if (StringUtils.isEmpty(uid) || StringUtils.isEmpty(sign)) {
+            writeResponse(request, response, ApiWebCode.HEADER_ERROR);
+            return false;
+        }
 
         //因为缓存了用户id和设备id
         DeviceUserVo du = userService.load(uid);

+ 4 - 0
rankin-data-api/src/main/java/cn/rankin/data/api/app/dto/LoginInfoDTO.java

@@ -3,16 +3,20 @@ package cn.rankin.data.api.app.dto;
 import lombok.Data;
 import lombok.ToString;
 
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 @Data
 @ToString
 public class LoginInfoDTO implements Serializable {
 
+    @NotNull
     private String deviceCode;
 
+    @NotNull
     private String eid;
 
+    @NotNull
     private String password;
 
     private String ip;