未调用Spring安全性自定义登录表单

时间:2015-09-04 09:13:05

标签: security spring-mvc login spring-security configuration

我正在尝试配置spring MVC Web应用程序以使用自定义登录表单进行身份验证。我的问题是自定义登录表单永远不会打开,但我总是得到标准的spring security登录表单。

我定义了以下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文件而不是标准的spring security登录表单。

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

enter image description here

我还配置了我的控制器:

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

似乎我的安全配置根本没有加载。

问题出在哪里?

1 个答案:

答案 0 :(得分:0)

终于明白了。

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

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

所以,改为

public class SecurityConfiguration

应该有

public class SecurityConfiguration extends WebSecurityConfigurerAdapter