2015-09-04 3 views
0

Я пытаюсь настроить веб-приложение Spring MVC для использования пользовательской формы входа для аутентификации с использованием аннотаций. Моя проблема заключается в том, что пользовательская форма входа никогда не открывается, но вместо этого я всегда получаю стандартную регистрационную форму весны.Неверная пользовательская форма входа в 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 
Смежные вопросы