2014-11-04 111 views
1

我有一個安全的Spring Boot應用程序,具有以下配置類。當我瀏覽到我的應用程序時,我被重定向到/login,但服務器拋出一個servlet異常並顯示消息Circular view path [login]: would dispatch back to the current handler URL [/login] again.我的應用程序是一個AngularJS應用程序,所以沒有服務器端視圖呈現。我有一個位於/ src/main/resources/static中的login.html頁面。我試過創建一個@Configuration類擴展WebMvcConfigurerAdapter爲了添加一個視圖控制器/login,但這似乎並沒有解決它。該課程與我的Application課程相同。Spring Boot自定義登錄頁面導致圓形視圖路徑異常

應用

@Configuration 
@EnableAutoConfiguration 
@Import({CommonsJpaConfig.class}) 
@ComponentScan 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class, args); 
    } 
} 

安全配置

@Configuration 
@EnableWebMvcSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
       .csrf().disable() 
       .authorizeRequests() 
        .anyRequest().authenticated(); 

     http 
       .formLogin() 
        .loginPage("/login") 
        .permitAll() 
        .and() 
       .logout() 
        .permitAll(); 
    } 

    @Configuration 
    protected static class AuthenticationConfiguration extends GlobalAuthenticationConfigurerAdapter { 

     @Inject 
     private PersonRepository personRepository; 

     @Override 
     public void init(AuthenticationManagerBuilder auth) throws Exception { 
      auth.userDetailsService(userDetailsService()); 
     } 

     @Bean 
     public UserDetailsService userDetailsService() { 
      return (email) -> personRepository.findByEmail(email) 
        .orElseThrow(() -> new UsernameNotFoundException("Could not find the user with email '" + email + "'.")); 
     } 
    } 
} 

最小的login.html測試

<!DOCTYPE html> 
<html> 
<head lang="en"> 
    <meta charset="UTF-8"> 
    <title></title> 
</head> 
<body> 
<h1>Login</h1> 
</body> 
</html> 
+0

您是否嘗試過在登錄後設置目標網址以查看它是否會實際重定向到ti? – Aeseir 2014-11-04 01:34:16

+0

不知道該怎麼辦,因爲我甚至無法看到登錄頁面本身。 – 2014-11-04 12:53:59

+0

啊,所以你實際上看不到登錄頁面,現在明白了,謝謝澄清。您能否向我們展示login.html頁面代碼,至少是登錄表單的一部分。 – Aeseir 2014-11-04 13:05:11

回答

0

對我來說,當我將login.html重命名爲loginpage.html之類的東西時,問題似乎就解決了。顯然,視圖的路由與靜態頁面的URL相混淆。