当用户登录到我的应用程序时,我将loginStatus作为“LoggedIn”保存在该用户的数据库中(因此多个登录不能从不同的计算机发生)。更新登录会话超时状态
它适用于我,但在1场景中我面临的问题。
如果用户只是离开他的电脑走开,现在他试图从其他电脑登录。 但他的db登录状态仍然是“登录”。所以他不能从其他电脑登录,除非他去其他电脑(他以前登录),并登出自己。
无论如何,我可以处理这个,理想情况下,如果有一种方法从以前的PC /浏览器自动注销用户,当他试图尝试从其他位置。
我在用户点击LOGOUT链接时调用此方法,这会使会话无效,并且还会拨打数据库.. 我想要调用此方法当出现不活动状态时,让我们说2分钟,或用户只需关闭他的浏览器(无LogginOut)
public String logOut() throws Exception {
System.out.println("inside server");
User user = (User) session.getAttribute("user");
logoutFromDb(user);// call to db
session=getThreadLocalRequest().getSession(true);
session.invalidate();
System.out.println("invalidated");
尝试这个
DateTime lastAccessedTime = new DateTime(session.getLastAccessedTime());
DateTime currentTime = new DateTime();
Minutes diff = Minutes.minutesBetween(currentTime, lastAccessedTime);
if (diff.getMinutes()>1){
logOut();
但lastAccessedTime是有时间当代码来到这条线本身最后一次
这一行:
DateTime lastAccessedTime = new DateTime(session.getLastAccessedTime());
所以没有给实际的时候,用户做了一些事情,相反,它给我的时候,这条线被称为..处理这是
您如何知道同一个人从不同的机器登录?但是,如果没有采取任何操作,您可以设置一些计时器在一段时间后自动注销。 – Smit
我会将他的凭据带到db,并检查他的loginStatus是否是“LoggedIn”,这是我在他第一次成功登录时设置的。所以如果该用户的loginStatus是“LoggedIN”,我会简单的不允许他登录。请让我知道最新的方式检查是否没有活动,这就是我之后 – junaidp
这是我发现最接近你的情况。 [会话管理在gwt](http://stackoverflow.com/questions/5831692/session-management-in-the-gwt) – Smit