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

3phpmpom  于 2022-11-11  发布在  Spring
关注(0)|答案(1)|浏览(107)

当我启动我的webapp时,我希望spring重定向到我的login.jsp,以便在它转到我的home.jsp之前进行身份验证,但是当app启动时,它会立即转到我的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();
    }
}

如果需要更多的信息,请让我知道。

chhqkbe1

chhqkbe11#

Edit正如下面的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进行身份验证,然后再继续。谢谢大家的帮助。

相关问题