Сделайте ресурсы JSF общедоступными с помощью Spring Security
Я реализовал Spring Security в моем приложении JSF. Все работает нормально, кроме статических ресурсов, требующих аутентификации. Это моя конфигурация
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable();
http.authorizeRequests()
.antMatchers("/register", "/resources/**").permitAll()
.anyRequest().authenticated()
.and().formLogin().loginPage("/login").permitAll()
.usernameParameter("username").passwordParameter("password")
.and().exceptionHandling().accessDeniedPage("/Access_Denied");
}
После некоторого поиска в Google большинство решений заключалось в добавлении тега ресурса mvc.
<mvc:resources mapping="/resources/**" location="/resources/"
cache-period="31556926"/>
Я нашел аналогичную аннотацию и добавил для этого класс конфигурации
@Configuration
@EnableWebMvc
public class WebMvcConfig extends WebMvcConfigurerAdapter {
// equivalents for <mvc:resources/> tags
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/").setCachePeriod(31556926);
}
// equivalent for <mvc:default-servlet-handler/> tag
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
Но все же статические ресурсы требуют аутентификации. Некоторая помощь была бы хороша о том, как заставить это работать.
Примечание: мои ресурсы размещены в/src/main/webapp/resources/{css|js|image}
, И проблема в том, что если пользователь не вошел в систему, эффект css, js не отображается на странице входа. После того, как пользователь вошел в систему один раз, а затем зашел на страницу входа в систему, появляется эффект css.