Я использую SpringMVC 4.3.13 и Spring Security 4.2.4.
В последние дни я добавляю в свое веб-приложение зависимость webjars, и все работает нормально, если я уже вошел в приложение.
Единственная проблема, с которой я сталкиваюсь, - это страница входа в систему, где я не могу использовать веб-файлы, потому что Spring Security не позволяет мне загружать ресурсы.
Вот как я загружаю ресурсы на странице входа в систему
<script src="/webjars/jquery/jquery.min.js"></script>
Здесь конфигурация ресурсов в MVCConfiguration
@Override
public void addResourceHandlers(final ResourceHandlerRegistry registry) {
registry.addResourceHandler("/webjars/**").addResourceLocations(/webjars/")
.resourceChain(false)
.addResolver(new WebJarsResourceResolver())
.addResolver(new PathResourceResolver());
registry.addResourceHandler("/css/**").addResourceLocations("/css/");
registry.addResourceHandler("/js/**").addResourceLocations("/js/");
registry.addResourceHandler("/plugins/**").addResourceLocations(/plugins/");
registry.addResourceHandler("/img/**").addResourceLocations("/img/");
registry.addResourceHandler("/images/**").addResourceLocations(/images/");
registry.addResourceHandler("/font/**").addResourceLocations("/font/");
registry.addResourceHandler("/fonts/**").addResourceLocations("/fonts/");
registry.addResourceHandler("/servlet/**").addResourceLocations("/servlet/");
registry.addResourceHandler("/user/**").addResourceLocations("/user/");
registry.addResourceHandler("/asset/**").addResourceLocations("/asset/");
registry.addResourceHandler("/xslt/**").addResourceLocations("/xslt/");
registry.addResourceHandler("/jsp/**").addResourceLocations("/jsp/");
registry.addResourceHandler("/applets/**").addResourceLocations("/applets/");
registry.addResourceHandler("/manager/**").addResourceLocations("/manager/");
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
И наконец мой WebSecurityConfig
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/webjars/**");
}
@Override protected void configure(final HttpSecurity http) throws Exception {
LOGGER.info("Initialization HTTP configuration");
http
.csrf().disable()
.addFilterBefore(authenticationFilter(), UsernamePasswordAuthenticationFilter.class)
.authorizeRequests().antMatchers("/login", "/asset/**","/privileged/**").permitAll()
.anyRequest().authenticated()
.and().formLogin().loginPage("/login")
.defaultSuccessUrl("/home")
.successHandler(customAuthenticationSuccessHandler)
.permitAll();
}
Как вы можете видеть, я уже добавил исключение в конфигурации безопасности.Я также пробую эту конфигурацию
.antMatchers("/login", "/asset/**","/privileged/**","/webjars/**").permitAll()
Но без успеха у кого-то есть какие-либо идеи.
ОБНОВЛЕНИЕ Конфигурация ресурсов resourceHandler и ResourceLocations правильная.На самом деле после входа в систему webjars работает правильно