我通过java配置开始使用spring安全性,但是当我转到http://localhost:8080/myapp时,我没有像我们预期的那样重定向到登录表单。
我有基本配置,我一直关注this guide。
我正在使用Spring Security 3.2.5.RELEASE和Spring Version 4.1.2.RELEASE。
这是我的安全配置:
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER").and()
.withUser("admin").password("password").roles("USER", "ADMIN");
}
}
和我的安全初始化程序:
public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer {
}
My Spring Servlet Dispatcher:
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
答案 0 :(得分:0)
在您的情况下,问题似乎是因为您的springSecurityFilterChain
未被扫描而未创建SecurityConfig
。
很多事情都可能是这个原因;
@ComponentScan
来覆盖SecurityConfig
,以便它可以注册过滤器bean springSecurityFilterChain
您必须在SecurityConfig
中明确注册SecurityInitializer
类,并确保正在调用SecurityInitializer。
public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer {
public SecurityInitializer() {
super(SecurityConfig.class);
}
}