gpt4 book ai didi

java - 在 Vaadin 中设置 JDBC 身份验证,无需 HTML 登录页面

转载 作者:行者123 更新时间:2023-11-30 03:21:52 36 4
gpt4 key购买 nike

我想在我的 Vaadin 应用程序上设置用户身份验证,但我不想使用 HTML 或 JSP 页面进行身份验证。我想使用 Vaadin API 编写代码来捕获用户名和密码,并使用更多 Java 代码将其提供给 Glassfish。到目前为止,我已经使用以下(基本)代码成功地从用户检索了用户名和密码:

@Title("test")
@Theme("valo")
public class MyVaadinApplication extends UI {
private String user;
private String pwd;

@WebServlet(value = "/*", asyncSupported = false)
@VaadinServletConfiguration(productionMode = false, ui = MyVaadinApplication.class)
public static class Servlet extends VaadinServlet {
}

@Override
protected void init(VaadinRequest request) {
FormLayout form = new FormLayout();
setContent(form);

TextField nameField = new TextField("Name:");
PasswordField passField = new PasswordField("Password:");
Button button = new Button("Login");

form.addComponent(nameField);
form.addComponent(passField);
form.addComponent(button);

button.addClickListener(new Button.ClickListener() {
public void buttonClick(ClickEvent event) {
user = nameField.getValue();
pwd = passField.getValue();
Notification.show("Name=" + user + ", PWD=" + pwd, Notification.Type.TRAY_NOTIFICATION);
}
});

}
}

现在我尝试使用用户/密码字符串登录,但我似乎找不到这样做的方法。我发现这个令人惊叹的文档准确地概述了我所需要的内容(在这里找到: https://blogs.oracle.com/bobby/entry/authentication_without_the_form ),但不幸的是它已经过时了,代码已经不存在了。我尝试搜索使用的“getRequest().login()”方法,但找不到任何支持它的 Vaadin 类。以前有人这样做过吗?如有任何帮助,我们将不胜感激。

最佳答案

我假设您的登录操作会将用户重定向到不同的页面/ View 。

您始终可以使用 session 的 setAttribute 函数在 View 之间传递属性:

getUI().getSession().setAttribute("username", user);

然后您可以在下一个 View 中检索此属性,以便确定用户是否已登录。

getUI().getSession().getAttribute("username");

我不确定您在哪里存储帐户,但您使用的任何内容(数据库、文本文件等)都应该是有效的。

我建议您查看 VaadinSession,因为该 session 实际上会存储您需要的所有数据,直到其过期。

以下是一些可能有帮助的链接:

VaadinSession documentation

Setting and reading session attributes

尝试这些,如果您需要,我可以提供更多帮助。

关于java - 在 Vaadin 中设置 JDBC 身份验证,无需 HTML 登录页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31148322/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com