我遵循Spring Security 3.2 doc编写示例应用程序。http.authorizeRequests()。anyRequest()。authenticated()是否意味着任何请求都拒绝谁没有登录?但是我访问任何可访问的URL。我缺少某些配置吗?
@Configuration
public class SpringWebMVCApplicationInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] { SecurityConfig.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] { WebConfig.class };
}
@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}
springmvc配置
@Configuration
@EnableWebMvc
@ComponentScan("org.jxs.mm.controller")
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/assets/**").addResourceLocations("/assets/");
registry.addResourceHandler("/favicon.ico").addResourceLocations("/favicon.ico");
}
}
春季安全配置
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated();
}
}
您可能尚未向war注册您的springSecurityFilterChain。请参阅Spring Security文档中的3.1.1节
总结一下:
SecurityConfig类定义您的Spring Security配置。它配置springSecurityFilterChain过滤器。
但是,此过滤器链需要应用到您的应用程序中的所有URL或向其注册(或与之关联)(以便URL被springSecurityFilterChain截获)。这可以通过扩展AbstractSecurityWebApplicationInitializer来完成,如下所示:
import org.springframework.security.web.context.*;
public class SecurityWebApplicationInitializer
extends AbstractSecurityWebApplicationInitializer {
}
之后,Spring Security应该拦截任何URL并按照配置应用适当的安全规则。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句