1

I am having a problem with logging in in my application using Vaadin and Tomcat 7.

The problem is like this: If it is the first time I run the application on my server, I log in, I do what I have to do and close the browser. Now if a friend logs in on the application from his computer, he is automatically logged in with my account.

How can I resolve this issue, is it a tomcat issue where it keeps the session open or something, or I have to make some configurations in vaadin?

EDIT: Let me explain it a bit better. In my main clas where vaadin is initiatied with first window (extends Application) i have a static final USER. If i make the user=null in init(). Every time a person acceses the application, it will ask him for his username and password, so it works. But even if he refreshes the website it will ask him to put the password and username again. How can I make it to remember that specific person using cookies and http responses?

I am very new to this so any help is apreciated

4

3 回答 3

2

Vaadin 使用 cookie 跟踪用户会话,我很难相信它会混淆会话。

我有点担心你提到“在我的主课中我有一个静态决赛”。静态成员不要随便使用,因为它们会在所有用户之间共享(并且会有线程安全问题)。如果您使用静态变量来存储已登录的用户,则所有用户都可能以一个身份登录...

正如您提到的 Application 类,您显然正在使用 Vaadin 6。有关使用 cookie 自动登录用户的信息,请参阅https://vaadin.com/book/vaadin6/-/page/advanced.httpservletrequestlistener.html。不过,在这种情况下,这可能不是您的问题。

于 2013-11-06T12:16:52.480 回答
2

我认为您需要从 USER 对象中删除静态 final 。任何静态 final 都只能为整个应用程序创建一次。你需要它是一个实例变量。

例如

private User USER = null;

并不是

private static final User USER = null;
于 2013-11-06T11:12:19.970 回答
1

看这个:

https://vaadin.com/de/book/vaadin7/-/page/application.lifecycle.html

基本上你必须区分这两件事:

  • 用户点击 F5/Refresh 默认情况下,它会显示一个新的应用程序会话
    您可以禁用此行为,如“刷新时保留 UI”中所述 您只需使用 @PreserveOnRefresh 注释您的主 UI 类

    这样做的“副作用”如下:

    • 你在你的应用程序中
    • 现在您只需关闭浏览器(或选项卡)
    • 您再次打开浏览器/选项卡
    • 除非您的 http 会话在此期间已过期,否则 Vaadin 会显示最后一个屏幕,如果您根本没有离开。
  • 您的 http 会话已过期或您已销毁 http 和/或 vaadin 会话

    Vaadin 然后只显示应用程序的开始屏幕。如果您希望登录表单预先填写一些值,您必须将它们存储在 http cookie 中并从那里填写值

安德烈

于 2013-11-03T12:39:12.627 回答