From e654e96db6ffeea342f49191772f87bd3ab7765c Mon Sep 17 00:00:00 2001 From: johnniang Date: Fri, 8 Mar 2019 19:32:47 +0800 Subject: [PATCH] Restructure api interceptor --- .../halo/config/SwaggerConfiguration.java | 6 ++-- .../ryanc/halo/model/support/HaloConst.java | 5 ++++ .../halo/web/interceptor/ApiInterceptor.java | 30 +++++++++---------- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/src/main/java/cc/ryanc/halo/config/SwaggerConfiguration.java b/src/main/java/cc/ryanc/halo/config/SwaggerConfiguration.java index 917162508..b93eb124f 100644 --- a/src/main/java/cc/ryanc/halo/config/SwaggerConfiguration.java +++ b/src/main/java/cc/ryanc/halo/config/SwaggerConfiguration.java @@ -30,6 +30,8 @@ import java.util.Arrays; import java.util.Collections; import java.util.List; +import static cc.ryanc.halo.model.support.HaloConst.HALO_VERSION; +import static cc.ryanc.halo.model.support.HaloConst.TOKEN_HEADER; import static springfox.documentation.schema.AlternateTypeRules.newRule; /** @@ -101,7 +103,7 @@ public class SwaggerConfiguration { } private ApiKey apiKeys() { - return new ApiKey("TOKEN ACCESS", HttpHeaders.AUTHORIZATION, In.HEADER.name()); + return new ApiKey("TOKEN ACCESS", TOKEN_HEADER, In.HEADER.name()); } private SecurityContext securityContext() { @@ -121,7 +123,7 @@ public class SwaggerConfiguration { return new ApiInfoBuilder() .title("Halo API Documentation") .description("Documentation for Halo API") - .version("v0.4.2") + .version(HALO_VERSION) .termsOfServiceUrl("https://ryanc.cc/") .contact(new Contact("RYAN0UP", "https://ryanc.cc/", "i#ryanc.cc")) .build(); diff --git a/src/main/java/cc/ryanc/halo/model/support/HaloConst.java b/src/main/java/cc/ryanc/halo/model/support/HaloConst.java index eedf58c8f..5318b509e 100644 --- a/src/main/java/cc/ryanc/halo/model/support/HaloConst.java +++ b/src/main/java/cc/ryanc/halo/model/support/HaloConst.java @@ -20,6 +20,11 @@ public class HaloConst { */ public static final String HALO_VERSION = "0.4.2"; + /** + * Token key + */ + public static final String TOKEN_HEADER = "token"; + /** * 所有设置选项(key,value) */ diff --git a/src/main/java/cc/ryanc/halo/web/interceptor/ApiInterceptor.java b/src/main/java/cc/ryanc/halo/web/interceptor/ApiInterceptor.java index 6d50f995b..fe0623cc2 100644 --- a/src/main/java/cc/ryanc/halo/web/interceptor/ApiInterceptor.java +++ b/src/main/java/cc/ryanc/halo/web/interceptor/ApiInterceptor.java @@ -1,8 +1,8 @@ package cc.ryanc.halo.web.interceptor; -import cc.ryanc.halo.model.support.JsonResult; import cc.ryanc.halo.model.enums.BlogPropertiesEnum; import cc.ryanc.halo.model.enums.TrueFalseEnum; +import cc.ryanc.halo.model.support.JsonResult; import cn.hutool.core.util.StrUtil; import com.fasterxml.jackson.databind.ObjectMapper; import org.springframework.http.HttpStatus; @@ -16,6 +16,7 @@ import javax.servlet.http.HttpServletResponse; import java.nio.charset.StandardCharsets; import static cc.ryanc.halo.model.support.HaloConst.OPTIONS; +import static cc.ryanc.halo.model.support.HaloConst.TOKEN_HEADER; /** *
@@ -28,8 +29,6 @@ import static cc.ryanc.halo.model.support.HaloConst.OPTIONS;
 @Component
 public class ApiInterceptor implements HandlerInterceptor {
 
-    private static final String TOKEN = "token";
-
     private final ObjectMapper objectMapper;
 
     public ApiInterceptor(ObjectMapper objectMapper) {
@@ -38,19 +37,20 @@ public class ApiInterceptor implements HandlerInterceptor {
 
     @Override
     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
-        if (StrUtil.equals(TrueFalseEnum.TRUE.getDesc(), OPTIONS.get(BlogPropertiesEnum.API_STATUS.getProp()))) {
-            if (StrUtil.equals(request.getHeader(TOKEN), OPTIONS.get(BlogPropertiesEnum.API_TOKEN.getProp()))) {
-                return true;
-            } else {
-                response.setCharacterEncoding(StandardCharsets.UTF_8.name());
-                response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
-                JsonResult result = new JsonResult(HttpStatus.BAD_REQUEST.value(), "Invalid Token");
-                response.getWriter().write(objectMapper.writeValueAsString(result));
-                return false;
-            }
+        if (!StrUtil.equals(TrueFalseEnum.TRUE.getDesc(), OPTIONS.get(BlogPropertiesEnum.API_STATUS.getProp()))) {
+            response.sendRedirect("/404");
+            return false;
         }
-        response.sendRedirect("/404");
-        return false;
+
+        if (!StrUtil.equals(request.getHeader(TOKEN_HEADER), OPTIONS.get(BlogPropertiesEnum.API_TOKEN.getProp()))) {
+            response.setCharacterEncoding(StandardCharsets.UTF_8.name());
+            response.setContentType(MediaType.APPLICATION_JSON_UTF8_VALUE);
+            JsonResult result = new JsonResult(HttpStatus.BAD_REQUEST.value(), "Invalid Token");
+            response.getWriter().write(objectMapper.writeValueAsString(result));
+            return false;
+        }
+
+        return true;
     }
 
     @Override