2015-09-04 68 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