我在/ static / img / **中有几个文件夹,我需要在其中一些文件夹中添加拦截器来检查用户权限.我之前使用过拦截器并以这种方式添加它们:
@SpringBootApplication @EnableTransactionManagement public class Application extends WebMvcConfigurerAdapter { ... @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry .addResourceHandler("/static/**") .addResourceLocations("classpath:/static/"); } @Bean public AuthHeaderInterceptor authHeaderInterceptor() { return new AuthHeaderInterceptor(); } @Bean public AuthCookieInterceptor authCookieInterceptor() { return new AuthCookieInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry .addInterceptor(authHeaderInterceptor()) .addPathPatterns(REST_URL) .excludePathPatterns( new String[] { REST_SECURITY_URL, REST_SETTINGS_URL, REST_REPORTS_URL } ); registry .addInterceptor(authCookieInterceptor()) .addPathPatterns(REST_REPORTS_URL); } }
一切都适用于休息控制器及其URL,但现在我需要保护一些静态资源,我添加了这个:
@SpringBootApplication @EnableTransactionManagement public class Application extends WebMvcConfigurerAdapter { ... @Bean public RoleAdminInterceptor roleAdminInterceptor() { return new RoleAdminInterceptor(); } @Override public void addInterceptors(InterceptorRegistry registry) { registry .addInterceptor(authHeaderInterceptor()) .addPathPatterns(REST_URL) .excludePathPatterns( new String[] { REST_SECURITY_URL, REST_SETTINGS_URL, REST_REPORTS_URL } ); //THIS NOT WORK registry .addInterceptor(roleAdminInterceptor()) .addPathPatterns("/static/img/admin/**"); registry .addInterceptor(authCookieInterceptor()) .addPathPatterns(REST_REPORTS_URL); } }
注释行不起作用.当我向/static/img/admin/test.png发送请求时,从不调用RoleAdminInterceptor.
我做错了什么?
关于这两者之间的区别的一些主题:
filters-vs-interceptor翻译自:https://stackoverflow.com/questions/46446115/spring-boot-how-to-add-interceptors-to-static-resources