zuul创建filter

    技术2024-10-10  49

    package com.filter; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration @Component public class CorsConfig { @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.setMaxAge(18000L); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } // "/shopUser/load" private String[] addPathPatterns = {"/shopUser/load" }; @Bean public FilterRegistrationBean<CustomerFilter> registFilter() { FilterRegistrationBean<CustomerFilter> registration = new FilterRegistrationBean<CustomerFilter>(); registration.setFilter(new CustomerFilter()); registration.addUrlPatterns(addPathPatterns); registration.setName("customerFilter"); registration.setOrder(1); return registration; } }

    CustomerFilter类:

    package com.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.context.support.WebApplicationContextUtils; @Component public class CustomerFilter implements Filter { private BaseRedisService baseRedisService; @Override public void init(FilterConfig filterConfig) throws ServletException { ServletContext servletContext = filterConfig.getServletContext(); ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext); baseRedisService=ctx.getBean("baseRedisService",BaseRedisService.class); } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { long start = System.currentTimeMillis(); HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse res=(HttpServletResponse)response; String token=req.getHeader("token"); if(!StringUtils.isEmpty(token)) { String userguid=baseRedisService.get(token); if(StringUtils.isEmpty(userguid)) { //request.getRequestDispatcher("error/notlogin").forward(request, response); }else { //chain.doFilter(request, response); } }else { // // req.setAttribute("Access-Control-Allow-Origin", "*"); res.addHeader("Access-Control-Allow-Origin", "*"); res.addHeader("access-control-allow-methods", "*"); res.addHeader("access-control-expose-headers", "Authorization"); res.addHeader("Access-Control-Allow-Credentials", "true"); res.addHeader("Access-Control-Allow-Headers", "*"); res.addHeader("Access-Control-Max-Age", "1728000"); res.addHeader("Content-Type", "application/json;charset=utf-8"); //res.sendRedirect("/error/notlogin"); //request.getRequestDispatcher("/error/notlogin").forward(request, res); } chain.doFilter(request, response); System.out.println("Execute cost=" + (System.currentTimeMillis() - start)); } @Override public void destroy() { // TODO Auto-generated method stub } }

     

    Processed: 0.011, SQL: 9