Spring默认使用我的home.jsp,而不是使用我的login.jsp进行身份验证



当我启动我的网络应用程序时,我希望spring重定向到我的login.jsp,以便在它进入我的home.jsp之前进行身份验证,但当应用程序启动时,它会立即进入我的home.jsp。我创建了这个SecurityFilterChain,我原以为它会默认为我的login.jsp进行身份验证。

@Configuration
public class SecurityConfiguration {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login", "/register").permitAll()
.and()
.formLogin()
.loginPage("/login").permitAll();
return http.build();
}
}

如果需要更多信息,请告诉我。

编辑正如jzheaux在下面指出的那样。方法的命名约定无关紧要。修复程序是添加.anyRequest((.authenticated((,它确保除了我在上面指定的页面之外的任何其他页面都需要身份验证,然后才能访问它们。

我发现了问题所在。我使用的是filterChain,而不是securityFilterChain。我还修改了一点方法,如所示

@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((requests) -> requests
.antMatchers("/login", "/register").permitAll()
.anyRequest().authenticated()
)
.formLogin((form) -> form
.loginPage("/login")
.loginProcessingUrl("/submit-login")
.permitAll()
)
.logout(LogoutConfigurer::permitAll);
return http.build();
}

做出这些更改后,应用程序默认打开我的login.jsp进行身份验证,然后再继续。感谢大家的帮助。

最新更新