Spring Security loginPage Vs loginProcessingURL

Spring Security loginPage Vs loginProcessingURL,spring,spring-boot,spring-security,Spring,Spring Boot,Spring Security,loginPage和loginProcessingURL之间的区别是什么。 .formLogin().loginPage(“/login”).usernamepartment(“电话号码”).passwordParameter(“密码”) 似乎是loginProcessingURL就像post方法一样,一旦用户提交了登录页面中的数据,但当我删除它时,它也可以正常工作。loginProcessingURL的意义是什么?它与loginPage有何不同?行loginPage(“/login”)指示Sp

loginPage和loginProcessingURL之间的区别是什么。
.formLogin().loginPage(“/login”).usernamepartment(“电话号码”).passwordParameter(“密码”)

似乎是loginProcessingURL就像post方法一样,一旦用户提交了登录页面中的数据,但当我删除它时,它也可以正常工作。loginProcessingURL的意义是什么?它与loginPage有何不同?

loginPage(“/login”)
指示Spring安全性

  • 需要身份验证时,将浏览器重定向到/login
  • 我们负责在请求/login时呈现登录页面
  • 当身份验证尝试失败时,将浏览器重定向到 /登录?错误(因为我们没有另外指定)
  • 我们负责在出现/login?错误时呈现失败页面 请求
  • 成功注销后,将浏览器重定向到/login?注销 (因为我们没有另行规定)
  • 我们负责在以下情况下提供注销确认页面: /登录?请求注销


通知Spring Security在发送到指定路径时处理提交的凭据,并在默认情况下将用户重定向回用户来自的页面。它不会将请求传递给Spring MVC和您的控制器


请参阅spring security源代码中的以下代码段是否可以帮助您:

loginPage the login page to redirect to if authentication is required

因此,在安全上下文中,如果我不是经过身份验证的用户,并且如果我试图访问经过身份验证的url,那么它应该正确显示.login页面(“/login”),但为什么它试图转到loginProcessingUrl(“/login/process”)。我正在筛选器中创建空的安全上下文SecurityContextHolder.createEmptyContext()。我已经在我的SecurityConfig http.addFilter(新的SecurityContextPersistenceFilter(securityRepository))中添加了过滤器;但是,每当我试图在浏览器中直接访问经过验证的url时,它都会将我重定向到loginProcessingUrl??“它不会将请求传递给Spring MVC和您的控制器。”这是不正确的。我自己测试
loginPage the login page to redirect to if authentication is required
loginProcessingUrl the URL to validate username and password
 DEFAULT_LOGIN_PAGE_URL = "/login"
/**
     * Updates the default values for authentication.
     *
     * @throws Exception
     */
    protected final void updateAuthenticationDefaults() {
        if (loginProcessingUrl == null) {
            loginProcessingUrl(loginPage);
        }
             //...
        }