我目前正在使用spring和vaadin构建一个Web应用程序。我搜索了几天找到一个解决方案来创建一个自定义登录页面,其中包含用于弹簧安全的vaadin。我有布局,但不知道如何将用户名和密码发送给春天....有人可以帮助我或给我一个很好的例子吗?
顺便说一句,我正在使用vaadin 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为登录页面创建了一个Route来管理它,并创建了一个自定义AuthenticationService,将Authentication Object放入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。现在,有关页面重新加载免费解决方案的部分正在进行中。