关于过滤器优先级的问题

来源: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

你试一下,如果没问题那就可以

0
1
慕斯902xzxc_das
好的谢谢老师!
2022-05-17
共1条回复

SpringBoot 在线协同办公小程序开发 全栈式项目实战

未来趋势型业务 + 前后端综合技术栈 + 惊艳的细节打磨

1798 学习 · 1915 问题

查看课程