Java 在没有HTML登录页的情况下在Vaadin中设置JDBC身份验证

Java 在没有HTML登录页的情况下在Vaadin中设置JDBC身份验证,java,authentication,jdbc,vaadin,Java,Authentication,Jdbc,Vaadin,我想在我的Vaadin应用程序上设置用户身份验证,但我不想使用HTML或JSP页面进行身份验证。我想使用vaadinapi编写代码来捕获用户名和密码,并使用更多Java代码将其提供给Glassfish。到目前为止,我已使用以下(基本)代码成功地从用户检索到用户名和密码: 现在我尝试使用user/pass字符串登录,但似乎找不到这样做的方法。我发现了这个惊人的文档,它准确地概括了我需要的东西(在这里找到:),但不幸的是,它已经过时了,代码也不存在了。我尝试搜索使用的“getRequest().lo

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


现在我尝试使用user/pass字符串登录,但似乎找不到这样做的方法。我发现了这个惊人的文档,它准确地概括了我需要的东西(在这里找到:),但不幸的是,它已经过时了,代码也不存在了。我尝试搜索使用的“getRequest().login()”方法,但找不到任何支持该方法的Vaadin类。以前有人这样做过吗?非常感谢您的帮助。

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

始终可以使用会话的
setAttribute
功能在视图之间传递属性:

getUI().getSession().setAttribute("username", user);
然后,您可以在下一个视图中检索该属性,以便确定用户是否已登录

getUI().getSession().getAttribute("username");
我不确定您将帐户存储在哪里,但无论您以何种方式使用(数据库、文本文件等),都应该是有效的

我建议您查看Vaadin会话,因为会话实际上存储了您需要的所有数据,直到过期

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


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

我实际上意识到,在该示例中,实际登录的是HttpServletRequest,但您提供了一些有用的文档!很高兴我能提供帮助,我实际上正在与Hibernate&Tomcat进行类似的项目,因此如果您需要任何其他帮助,请询问。:)您认为您可以澄清获取和设置属性将如何帮助进行身份验证吗?今天,我重温了你的答案,我正在努力实现你所说的。我试图使用JDBC用户/pw表和JDBC组表来基于组对用户进行身份验证。我知道如何使用用户定义的HTML页面进行身份验证(表单身份验证),但我不知道如何使用普通的ol'Java代码完成同样的事情。谢谢@妮可:我当然可以。可以在视图之间传递属性。将视图视为页面。您有一个登录视图和主视图。您需要登录才能访问主视图。在主视图中检查属性。如果为空,则不授予访问权限,否则授予访问权限。您可以从登录视图中设置属性。假设用户在登录视图中输入一个用户名(假设它对每个用户都是唯一的),然后将其作为属性传递,以便登录用户可以访问主视图。这是基本的想法。当然,您可以为每个用户创建唯一的视图,这样他们就可以访问自己的页面。如果您使用mysql,Hibernate是一个很好的框架,它可以直接消除任何基于SQL的代码,并使数据库操作纯java。过来看。
getUI().getSession().getAttribute("username");