关于过滤器优先级的问题
来源:3-8 创建OAuth2Filter类(一)

慕斯902xzxc_das
2022-05-16
老师您好,请问我将Cors过滤器放在OAuth2Filter过滤器之前是不是没必要在OAuth2Filter中再处理跨域请求了?
如下:
@Configuration
public class CorsConfig {
/**
* 配置 CORS 跨域过滤器注册Bean
*/
@Bean
FilterRegistrationBean<CorsFilter> corsFilterFilterRegistrationBean() {
// 设置跨域规则
CorsConfiguration corsConfiguration = new CorsConfiguration();
corsConfiguration.addAllowedOrigin("*"); // 所有 origin
corsConfiguration.addAllowedHeader("*"); // 所有 Header
corsConfiguration.addAllowedMethod("*"); // 所有 方法
corsConfiguration.setAllowCredentials(true); // 允许传递 cookie
corsConfiguration.setMaxAge(3600L); // 最大存活时间
FilterRegistrationBean<CorsFilter> corsFilterFilterRegistrationBean = new FilterRegistrationBean<>();
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfiguration);
corsFilterFilterRegistrationBean.setFilter(new CorsFilter(source));
corsFilterFilterRegistrationBean.setOrder(0); // 设置过滤器优先级
return corsFilterFilterRegistrationBean;
}
}
那么 OAuth2Filter#isAccessAllowed() 方法直接返回 false 是不是就可以了?
@Override
protected boolean isAccessAllowed(ServletRequest request, ServletResponse response, Object mappedValue) {
// 跨域请求已经被 CorsFilter 拦截处理,此处将所有请求拦截,并交给 shiro 进行认证
return false;
}
写回答
1回答
-
神思者
2022-05-16
你试一下,如果没问题那就可以
012022-05-17
相似问题