拦截器几种写法

it2025-09-09  6

继承HandlerInterceptorAdapter

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import org.springframework.web.util.WebUtils; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Component public class AuthorizationInterceptor extends HandlerInterceptorAdapter { private SysUserTokenService sysUserTokenService; public AuthorizationInterceptor(SysUserTokenService sysUserTokenService) { this.sysUserTokenService = sysUserTokenService; } public static final String USER_KEY = "userId"; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (**request.getMethod().equals(RequestMethod.**OPTIONS**.name())**) { response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin")); response.setHeader("Access-Control-Allow-Methods", request.getMethod()); response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers")); response.setStatus(HttpStatus.OK.value()); return false; } return true; } }` import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurerAdapter() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"). allowedOrigins("*"). //允许跨域的域名,可以用*表示允许任何域名使用 allowedMethods("*"). //允许任何方法(post、get等) allowedHeaders("*"). //允许任何请求头 allowCredentials(true). //带上cookie信息 exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); //maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果 } }; } @Override public void addInterceptors(InterceptorRegistry registry) { // 可添加多个 registry.addInterceptor(new AuthorizationInterceptor(sysUserTokenService)).addPathPatterns("/**"); } } #### Filter @Component public class CorsFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse httpResponse = (HttpServletResponse) res; HttpServletRequest httpRequest = (HttpServletRequest) req; httpResponse.setHeader("Access-Control-Allow-Origin", httpRequest.getHeader("Origin")); httpResponse.setHeader("Access-Control-Allow-Methods", httpRequest.getMethod()); httpResponse.setHeader("Access-Control-Max-Age", "3600"); httpResponse.setHeader("Access-Control-Allow-Headers", httpRequest.getHeader("Access-Control-Request-Headers")); chain.doFilter(httpRequest, httpResponse); } @Override public void init(FilterConfig filterConfig) { } @Override public void destroy() { } }

实现WebMvcConfigurer

@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Bean public WebMvcConfigurer corsConfigurer() { return new WebMvcConfigurer() { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**"). allowedOrigins("*"). //允许跨域的域名,可以用*表示允许任何域名使用 allowedMethods("*"). //允许任何方法(post、get等) allowedHeaders("*"). //允许任何请求头 allowCredentials(true). //带上cookie信息 exposedHeaders(HttpHeaders.SET_COOKIE).maxAge(3600L); //maxAge(3600)表明在3600秒内,不需要再发送预检验请求,可以缓存该结果 } }; } @Override public void addInterceptors(InterceptorRegistry registry) { // 可添加多个 registry.addInterceptor(new AuthorizationInterceptor(sysUserTokenService)).addPathPatterns("/**"); } } @Component public class AuthorizationInterceptor extends HandlerInterceptorAdapter { private SysUserTokenService sysUserTokenService; public AuthorizationInterceptor(SysUserTokenService sysUserTokenService) { this.sysUserTokenService = sysUserTokenService; } public static final String USER_KEY = "userId"; @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { if (**request.getMethod().equals(RequestMethod.**OPTIONS**.name())**) { response.setHeader("Access-control-Allow-Origin", request.getHeader("Origin")); response.setHeader("Access-Control-Allow-Methods", request.getMethod()); response.setHeader("Access-Control-Allow-Headers", request.getHeader("Access-Control-Request-Headers")); response.setStatus(HttpStatus.OK.value()); return false; } return true; } }
最新回复(0)