如何在 Spring Security 中设置自定义登录路径?

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

我正在将 springboot 和 spring security 用于 Web 应用程序,我的用户登录可以在默认登录页面上正常工作,如果我使用带有以下代码的自定义 login.html 也可以正常工作。

 http.formLogin(form ->{
            form.loginPage("/login").permitAll();
            form.defaultSuccessUrl("/files");

但是如果我设置不同的路径,例如:

form.loginPage("/signin").permitAll();

“自定义”登录 URL 的控制器:

 @GetMapping("/signin")
    public String getSingIn(Model model){

        model.addAttribute("user", UserDTO.builder().build());

        return "login";


    }

登录表单有效,但我无法对其进行授权。我只是再次重定向到登录页面(“/signin”)

<body>
<h1>Please Log In</h1>

<form method="POST"   th:action="@{'/login'}">
  <div>
    <input type="text" name="username" id="username" placeholder="Username" />
  </div>
  <div>
    <input type="password" name="password" id="password" placeholder="Password" />
  </div>
  <input type="submit" value="Log in" />
</form>
</body>
</html>

我只是想知道我是否做错了什么,或者登录表单是否必须始终为 /login ?

java spring spring-boot spring-security
1个回答
0
投票

在您的情况下,您尝试使用自定义登录路径,它不是静态页面,而是 MVC URL。在这种情况下,我猜 Spring Boot 假定登录处理 URL 与 formlogin 配置中提供的自定义 MVC URL 相同。

因此,您必须告诉 Spring Boot 保持登录处理 URL 与默认 URL 相同,或者您也可以自定义它。 在您的情况下,修改后的 Spring Security 配置如下:-

 http.formLogin(form ->{
        form.loginPage("/signin").loginProcessingUrl("/login").permitAll();
        form.defaultSuccessUrl("/files");
© www.soinside.com 2019 - 2024. All rights reserved.