2016-12-05 2 views
0
@Configuration 
@EnableWebSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    ... 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/css/**", "/js/**", "/img/**").permitAll() 
       .anyRequest().authenticated() 
       .and() 
      .formLogin() 
       .loginPage("/login") 
       .loginProcessingUrl("/login") 
       .failureForwardUrl("/login?error") 
       .successForwardUrl("/admin") 
       .permitAll() 
       .and() 
      .logout() 
       .logoutSuccessUrl("/login?logout") 
       .permitAll(); 
    } 
} 

выше WebSecurityConfig работает только при отображении со следующим классом:@Controller аннотаций не правильно отображение Spring Security страницы 4 входа

@Configuration 
public class MvcConfig extends WebMvcConfigurerAdapter { 

    @Override 
    public void addViewControllers(ViewControllerRegistry registry) { 
     registry.addViewController("/login").setViewName("login"); 
    } 

} 

Когда я пытаюсь и заменить выше отображение с помощью контроллера, запрос Логин не обрабатывается должным образом и получить следующую ошибку:

ERROR 290168 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet dispatcherServlet threw exception

Вот что мой контроллер выглядит :

@Controller 
public class AdminController extends BaseController { 

    @RequestMapping(value = "/login") 
    public String login(Model model) { 
     return "login"; 
    } 
} 

Любая идея, почему отображение AdminController запрос не работает, а WebMvcConfigurerAdapter отображение делает?

ответ

0

Обнаружена проблема. Это было не с отображением, которое было с WebSecurityConfig. Что-то странное происходит с помощью метода .failureForwardUrl(). Вот что я нашел:


Следующие не запускается полностью, в результате ошибки я увидел

.formLogin() 
    .loginPage("/login") 
    .loginProcessingUrl("/loginProcess") 
    .successForwardUrl("/admin") 
    .failureForwardUrl("/login") 
    .permitAll() 
    .and() 

С недействительным входом, следующий код будет оставить пользователь в/loginProcess

.formLogin() 
    .loginPage("/login") 
    .loginProcessingUrl("/loginProcess") 
    .successForwardUrl("/admin") 
    .failureForwardUrl("/") 
    .permitAll() 
    .and() 

Вт с неправильным входом в систему, следующий код оставит пользователя в/login? ошибка

.formLogin() 
    .loginPage("/login") 
    .loginProcessingUrl("/loginProcess") 
    .successForwardUrl("/admin") 
    .permitAll() 
    .and() 
Смежные вопросы