Saya memiliki aplikasi Spring Boot dengan Spring Security. Pada tingkat dasar, ini cukup cocok dengan yang ada di tutorial Spring. Pertanyaan saya adalah, ketika saya membuka halaman beranda, ia memanggil pengontrol login (dua kali). Mengapa? Tidak terlihat jelas bahwa ia melakukan hal tersebut dengan pengaturan dasar, karena ia hanya menampilkan halaman beranda. Tetapi jika saya menambahkan kelas LoginController, kelas itu akan dipanggil (dua kali) saat memuat halaman beranda. Cara lain untuk melihatnya adalah dengan menambahkan tag thymeleaf yang tidak valid ke template login.html, ini akan menimbulkan kesalahan, meskipun halaman beranda tidak seharusnya diautentikasi. Penjelasan apa pun akan sangat membantu.
Kode saya:
Aplikasi:
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
Konfigurasi Keamanan Web:
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth
.inMemoryAuthentication()
.withUser("user").password("password").roles("USER");
}
}
Pengontrol Rumah:
@Controller
public class HomeController {
@RequestMapping(value="/", method=RequestMethod.GET)
public String getHomePage(Model model) {
return "home";
}
}
LoginController opsional, akan dipanggil ketika membuka halaman beranda:
@Controller
public class LoginController {
@RequestMapping(value="/login", method=RequestMethod.GET)
public String getLoginPage(Model model) {
return "login";
}
}