deason 7 rokov pred
rodič
commit
db20952c77

+ 66 - 0
src/main/java/cn/com/qmth/examcloud/app/core/config/CustomRequestWrapper.java

@@ -0,0 +1,66 @@
+/*
+ * *************************************************
+ * Copyright (c) 2018 QMTH. All Rights Reserved.
+ * Created by Deason on 2018-08-01 14:43:30.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.app.core.config;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
+import java.util.*;
+
+/**
+ * 自定义Request Header
+ *
+ * @author: fengdesheng
+ * @since: 2018/8/1
+ */
+public class CustomRequestWrapper extends HttpServletRequestWrapper {
+    private final Set<String> names = new HashSet<>();
+    private final Map<String, String> headers = new HashMap<>();
+
+    public CustomRequestWrapper(HttpServletRequest request) {
+        super(request);
+        Enumeration<String> enumeration = super.getHeaderNames();
+        while (enumeration.hasMoreElements()) {
+            names.add(enumeration.nextElement());
+        }
+    }
+
+    public void addHeader(String name, String value) {
+        if (name == null) {
+            return;
+        }
+        this.headers.put(name, value);
+        this.names.add(name);
+    }
+
+    @Override
+    public String getHeader(String name) {
+        if (headers.containsKey(name)) {
+            return headers.get(name);
+        }
+        return super.getHeader(name);
+    }
+
+    @Override
+    public Enumeration<String> getHeaders(String name) {
+        if (headers.containsKey(name)) {
+            String value = headers.get(name);
+            if (value != null) {
+                Set<String> set = new HashSet<>();
+                set.add(value);
+                return Collections.enumeration(set);
+            }
+        }
+        return super.getHeaders(name);
+    }
+
+    @Override
+    public Enumeration<String> getHeaderNames() {
+        return Collections.enumeration(names);
+    }
+
+}

+ 35 - 0
src/main/java/cn/com/qmth/examcloud/app/core/config/FilterConfig.java

@@ -0,0 +1,35 @@
+/*
+ * *************************************************
+ * Copyright (c) 2018 QMTH. All Rights Reserved.
+ * Created by Deason on 2018-08-01 15:18:56.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.app.core.config;
+
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author: fengdesheng
+ * @since: 2018/8/1
+ */
+@Configuration
+public class FilterConfig {
+
+    @Bean
+    public FilterRegistrationBean filterRegistrationBean() {
+        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
+        TokenFilter tokenFilter = new TokenFilter();
+        registrationBean.setFilter(tokenFilter);
+        List<String> urlPatterns = new ArrayList<>();
+        urlPatterns.add("/api/*");
+        registrationBean.setUrlPatterns(urlPatterns);
+        return registrationBean;
+    }
+
+}

+ 44 - 0
src/main/java/cn/com/qmth/examcloud/app/core/config/TokenFilter.java

@@ -0,0 +1,44 @@
+/*
+ * *************************************************
+ * Copyright (c) 2018 QMTH. All Rights Reserved.
+ * Created by Deason on 2018-08-01 15:17:10.
+ * *************************************************
+ */
+
+package cn.com.qmth.examcloud.app.core.config;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.servlet.*;
+import javax.servlet.FilterConfig;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * @author: fengdesheng
+ * @since: 2018/8/1
+ */
+public class TokenFilter implements Filter {
+    private final static Logger log = LoggerFactory.getLogger(TokenFilter.class);
+
+    @Override
+    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
+            throws IOException, ServletException {
+        log.debug("doFilter");
+        CustomRequestWrapper customRequest = new CustomRequestWrapper((HttpServletRequest) servletRequest);
+        //customRequest.addHeader("token", "111");
+        filterChain.doFilter(customRequest, servletResponse);
+    }
+
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+        log.debug("init");
+    }
+
+    @Override
+    public void destroy() {
+        log.debug("destroy");
+    }
+
+}