в чем разница между loginPage и loginProcessingURL.
.formLogin().loginPage("/login").usernameParameter("phone-number").passwordParameter("password")
Кажется, что loginProcessingURL похож на метод post, когда пользователь отправляет данные на странице входа, но когда я удаляю, он также работает нормально. В чем важность loginProcessingURL и чем он отличается от loginPage?
Строка loginPage("/login") указывает Spring Security
А ТАКЖЕ
.loginProcessingUrl("/login/process")
сообщает Spring Security обрабатывать отправленные учетные данные при отправке по указанному пути и, по умолчанию, перенаправлять пользователя обратно на страницу, с которой пользователь пришел. Он не будет передавать запрос Spring MVC и вашему контроллеру.
Обратитесь к документация
«Он не будет передавать запрос Spring MVC и вашему контроллеру». Это неправда. Проверено мной
Пусть вам поможет следующий фрагмент кода из исходного кода Spring Security :
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);
}
//...
}
Итак, в контексте безопасности, если я не аутентифицированный пользователь и если я пытаюсь получить доступ к аутентифицированному URL-адресу, тогда он должен отображать право .loginPage ("/ login"), но почему он пытается перейти к loginProcessingUrl ("/ login / process "). Я создаю пустой контекст безопасности SecurityContextHolder.createEmptyContext () в своем фильтре. Я добавил фильтр в свой SecurityConfig http.addFilter (новый SecurityContextPersistenceFilter (securityRepository)); но всякий раз, когда я пытаюсь получить доступ к аутентифицированному URL-адресу непосредственно в браузере, он перенаправляет меня на loginProcessingUrl ??