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>
您是否嘗試過在登錄後設置目標網址以查看它是否會實際重定向到ti? – Aeseir 2014-11-04 01:34:16
不知道該怎麼辦,因爲我甚至無法看到登錄頁面本身。 – 2014-11-04 12:53:59
啊,所以你實際上看不到登錄頁面,現在明白了,謝謝澄清。您能否向我們展示login.html頁面代碼,至少是登錄表單的一部分。 – Aeseir 2014-11-04 13:05:11