В настоящее время я создаю веб-приложение с помощью spring и vaadin. Я искал несколько дней, чтобы найти решение для создания настраиваемой страницы входа с vaadin для весенней безопасности. У меня есть макет, но я не знаю, как отправить логин и пароль в spring .... Кто-нибудь может мне помочь или показать хороший пример?
Кстати использую ваадин 10.




Если вы настроили Spring для использования formLogin(), вы можете просто отправить данные в обычной форме.
<form method = "POST" action = "login">
<input name = "username" />
<input name = "password" />
<input type = "submit" value = "Log in" />
</form>
Если вы хотите использовать компоненты Vaadin внутри, вам нужно обернуть все в iron-form
<iron-form id = "ironForm" allow-redirect = "true">
<form method = "POST" action = "login">
<vaadin-text-field name = "username"></vaadin-text-field>
<vaadin-password-field name = "password"></vaadin-password-field>
<vaadin-button theme = "primary" on-click = "_submit">
Log in
</vaadin-button>
</form>
</iron-form>
и вручную отправить форму при нажатии кнопки Vaadin
_submit() {
this.$.ironForm.submit();
}
Я справился с этим, создав маршрут для страницы входа с помощью Vaadin и создал настраиваемую службу AuthenticationService, которая помещает объект аутентификации в SecurityContextHolder.
Vaadin 13 представляет специальные компоненты входа в систему, которые вы можете использовать. Они отправят данные формы на настроенную конечную точку, которую прослушивает Spring Security:
@Tag("sa-login-view")
@Route(value = LoginView.ROUTE)
@PageTitle("Login")
public class LoginView extends VerticalLayout {
public static final String ROUTE = "login";
private LoginOverlay login = new LoginOverlay(); // (1)
public LoginView(){
login.setAction("login"); // (2)
login.setOpened(true); // (3)
login.setTitle("Spring Secured Vaadin");
login.setDescription("Login Overlay Example");
getElement().appendChild(login.getElement()); // (4)
}
}
Этот фрагмент кода является частью учебника по Vaadin и Spring Security в целом. Отметьте https://vaadin.com/tutorials/securing-your-app-with-spring-security. Прямо сейчас идет работа над разделом о бесплатном решении для перезагрузки страницы.
Это должно быть возможно с помощью вызова
AuthenticationProvider#authenticate. Я не уверен, но Spring Boot уже должен автоматически настраивать его. Я думаю, что для обычного весеннего приложения вам нужно настроить его вручную.