Java Spring安全拦截不起作用
我正通过java配置开始使用spring安全性,但当我转到时,我并没有像我们预期的那样重定向到登录表单 我有基本的配置,我一直在遵循 我使用的是SpringSecurity3.2.5.RELEASE和SpringVersion4.1.2.RELEASE 这是我的安全配置:Java Spring安全拦截不起作用,java,spring-mvc,spring-security,Java,Spring Mvc,Spring Security,我正通过java配置开始使用spring安全性,但当我转到时,我并没有像我们预期的那样重定向到登录表单 我有基本的配置,我一直在遵循 我使用的是SpringSecurity3.2.5.RELEASE和SpringVersion4.1.2.RELEASE 这是我的安全配置: @Configuration @EnableWebMvcSecurity public class SecurityConfig extends WebSecurityConfigurerAdapter { @Ove
@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 {
}
我的Spring Servlet调度器:
<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>
appServlet
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
/WEB-INF/spring/appServlet/servlet-context.xml
1.
appServlet
/
您的问题似乎在于未创建springSecurityFilterChain
,因为未扫描您的SecurityConfig
很多事情都可能是原因
@ComponentScan
来覆盖SecurityConfig
,这样它就可以注册过滤beanspringSecurityFilterChain
SecurityInitializer
中显式注册SecurityConfig
类,并确保正在调用SecurityInitializer
public class SecurityInitializer extends AbstractSecurityWebApplicationInitializer {
public SecurityInitializer() {
super(SecurityConfig.class);
}
}
您正在使用的web服务器是什么?你也在使用Spring Web MVC吗?我正在通过gradle使用jetty,是的,我也在使用Spring Web MVC。请显示你的Spring Web MVC DispatcherServlet registeringWhat是你的Web.xml Web应用版本中的否。它一定是3.0我尝试了两种解决方案,但都不起作用。如果我使用的是spring,为什么我必须放置该构造函数(
SecurityInitializer
)?请参阅注释。要使AbstractSecurityWebApplicationInitializer正常工作,您需要有Web.xml版本3.0,请确保您有。我有:
好的,您是否有404/登录名未找到?或任何其他错误?我在/login
上有一个自定义的登录页面,我可以正常获得该页面。