内置Spring Security授权表单

问题描述 投票:0回答:1

我正在使用 java、Spring Security、Spring boot 在网站上进行注册和用户登录,出现的问题是,当我登录到 localhost:8080/login 时,会打开 Spring Security 的标准表单,而不是我编写的表单,这里是SecurityConfig代码,如果有需要我会附上其他文件的代码

package com.Schat;

import org.springframework.context.annotation.Bean;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.security.web.SecurityFilterChain;

@EnableWebSecurity
public class SecurityConfig
{
    @Bean
    public SecurityFilterChain securityFilterChain (HttpSecurity http) throws Exception
    {
        http
                .csrf(csrf -> csrf.disable())
                .authorizeHttpRequests(authorize -> authorize
                        .requestMatchers("/register", "/h2-console/**").permitAll()
                        .anyRequest().authenticated()
                )
                .formLogin(form -> form
                        .loginPage("/login").permitAll()
                )
                .logout(logout -> logout
                        .permitAll()
                );

        http.headers(headers -> headers.frameOptions(frameOptions -> frameOptions.disable()));
        return http.build();
    }


    @Bean
    public PasswordEncoder passwordEncoder()
    {
        return new BCryptPasswordEncoder();
    }
}
java spring spring-security backend registration
1个回答
0
投票

这确实可能有很多原因,我希望您写出更多详细信息。 但我猜想该文件不存在于 src/main/resources/templates 路径中或者 spring security 找不到它。 我的建议是编写以下代码:

.formLogin(form -> form
        .loginPage("/login")
        .loginProcessingUrl("/you_login_apth")
        .permitAll()
)

我的意思是尝试显式设置loginProcessingUrl

© www.soinside.com 2019 - 2024. All rights reserved.