Spring Security 默认登录表单不会被自定义登录页面替换

Posted

技术标签:

【中文标题】Spring Security 默认登录表单不会被自定义登录页面替换【英文标题】:Spring Security default login form doesn't get replaced with custom login page 【发布时间】:2021-04-27 18:16:44 【问题描述】:

如何在应用程序开始运行时删除默认登录页面作为第一页?我正在构建一个电子商务网站,其主页中包含一些产品,每个人都可以查看,登录后应该只有仪表板可用,这应该基于角色即。用户或管理员

我已禁用 httpBasic,因为我想要第一个登录页面,即所有人的主页,并且我想使用自定义登录页面,但在浏览器“/login”中使用时,它会出现在默认登录页面上


@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter 

    
    
    
    @Override
    protected void configure(HttpSecurity http) throws Exception 
        http.httpBasic().disable();
        http.formLogin().loginPage("/login");
        
    


在主控制器类中,我有“/login”的 RequestMapping 以重定向到我的自定义页面


@Controller
public class mainController 
    @RequestMapping("/login")
    public String registration() 
        return "login-register";
    
    @GetMapping("/my-account")
    public String account() 
        return "my-account";
    

【问题讨论】:

【参考方案1】:

首先,登录页面的名称应与控制器中的返回值相匹配。 我的意思是,如果您的登录页面是这样的:login.html 您的控制器方法应该如下所示。


    @GetMapping("/login")
    public String login() 
        return "login";
    

但是如果问题仍然存在尝试修改你的配置方法。

        http
                .formLogin()
                .loginPage("/login");

【讨论】:

以上是关于Spring Security 默认登录表单不会被自定义登录页面替换的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Spring Security 中用自定义替换标准登录表单

未调用 Spring Security 自定义登录表单

spring security 改变 spring_security_login 表单

如何使用 Spring Security / Spring MVC 处理表单登录

自定义登录表单无法使用 Spring Security

Keycloak + Spring Security,通过本地登录表单