【发布时间】:2016-08-22 19:03:30
【问题描述】:
我已经在我的 jsf 应用程序中实现了 Spring Security。除了静态资源需要身份验证外,一切正常。这是我的配置
@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");
}
谷歌搜索后,大多数解决方案是添加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效果。
【问题讨论】:
标签: java spring-mvc jsf spring-security