如何仅使用Java在vaadin中创建Spring Security登录页面?

时间:2018-11-13 18:34:44

标签: java spring security login vaadin

我目前正在使用spring和vaadin构建一个Web应用程序。我花了几天时间寻找解决方案,以使用vaadin创建自定义登录页面以确保春季安全。我已经有了布局,但不知道如何将用户名和密码发送给spring。 有人可以帮我还是给我一个好榜样?

通过我使用vaadin 10的方式。

3 个答案:

答案 0 :(得分:0)

如果您已将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();
}

答案 1 :(得分:0)

我通过使用Vaadin为登录页面创建路由来管理它,并创建了一个自定义AuthenticationService,该服务将Authentication Object放入SecurityContextHolder。

答案 2 :(得分:0)

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。目前,有关无页面重装解决方案的部分正在进行中。