2015-09-04 36 views
0

我正在尝试配置Spring MVC Web应用程序以使用自定义登录表单进行使用注释进行身份验证。我的问题是,自定义登录表单从来没有打开过,但是我总是得到标准的spring安全登录表单。未调用Spring安全自定义登录表单

我已经定义了以下SecurityConfiguration类:

package com.test.spring.config; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; 
import org.springframework.security.config.annotation.web.builders.HttpSecurity; 
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; 

@EnableWebSecurity 
public class SecurityConfiguration { 

    @Autowired 
    public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .inMemoryAuthentication() 
       .withUser("user").password("password").roles("USER"); 
    } 

    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/login").permitAll() 
       .antMatchers("/resources/**").permitAll() 
       .antMatchers("/admin/**").hasRole("ADMIN") 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .defaultSuccessUrl("/home") 
       .usernameParameter("user_login") 
       .passwordParameter("user_password") 
       .and() 
      .logout() 
       .logoutUrl("/logout") 
       .logoutSuccessUrl("/login") 
       .permitAll() 
       .and() 
      .csrf() 
       .and() 
      .sessionManagement() 
       .invalidSessionUrl("/login?time=1") 
       .maximumSessions(10); 
    } 

} 

而且SecurityWebApplicationInitializer类:

package com.test.spring.config; 

import org.springframework.security.web.context.AbstractSecurityWebApplicationInitializer; 

public class SecurityWebApplicationInitializer extends AbstractSecurityWebApplicationInitializer { 

} 

此外,我创建的自定义登录表单login.html所以我假定配置将载入我login.html文件,而不是标准的春季安全登录表单。

无论我做什么,我总是得到标准的登录表单:

enter image description here

我也配置了我的控制器:

@RequestMapping(value = "/login", method = RequestMethod.GET) 
    public String login() { 
     return "login"; 
    } 

看来,我的安全配置是不加载所有。

问题在哪里?

+0

只是为了测试你有什么,当你访问/spring/login.html –

+0

沿着这有可能是你控制器的missied配置使用URL http://docs.spring.io/spring-security/site/docs/3.2.x/guides/form.html –

+0

/spring/login.html通过标准登录表单重定向回/ spring/login – user1563721

回答

0

终于明白了。

该解决方案非常简单。我的安全配置根本没有加载,因为SecurityConfiguration类必须扩展为WebSecurityConfigurerAdapter

之后,加载配置,一切都按预期工作。

所以,相反

public class SecurityConfiguration 

应该有

public class SecurityConfiguration extends WebSecurityConfigurerAdapter 
相关问题