Java 当同一帐户再次登录时,是否自动将用户踢出?
谢谢你的回复!这是我的密码!请给出您的评论! 我创建了一个列来保存用户的当前状态Java 当同一帐户再次登录时,是否自动将用户踢出?,java,sql-server,swing,Java,Sql Server,Swing,谢谢你的回复!这是我的密码!请给出您的评论! 我创建了一个列来保存用户的当前状态 ShareHelper.USER = nhanVien;//use static variable to save USER if (ShareHelper.USER.getStatus() == 0) {//first login -> change status from 0 to 1 DialogHelper.alert(t
ShareHelper.USER = nhanVien;//use static variable to save USER
if (ShareHelper.USER.getStatus() == 0) {//first login -> change status from 0 to 1
DialogHelper.alert(this, "Đăng nhập thành công!");
nvd.updateStatus(1, nhanVien.getMaNV());
this.dispose();
EduSys edu = new EduSys();
edu.setVisible(true);
} else if (ShareHelper.USER.getStatus() == 1) { //if someone logged before -> allow to login again
DialogHelper.alert(this, "Đăng nhập thành công!");
EduSys edu = new EduSys();
edu.setVisible(true);
nvd.updateStatus(2, nhanVien.getMaNV());//then update status to 2
this.dispose();
}
在大型机中,我使用一个线程连续更新状态
Thread t1 = new Thread(new Runnable() {//use Thread to check if status change to 2-> someone logs in with same account
@Override
public void run() {
while (true) {
model.NhanVien nhanVien = nvd.findById(ShareHelper.USER.getMaNV());
ShareHelper.USER = nhanVien;
if (ShareHelper.USER.getStatus() == 2) {
DialogHelper.alert(EduSys.this, "Có người đã đăng nhập tài khoản này!");
ShareHelper.logoff();//log out the present session
nvd.updateStatus(1, ShareHelper.USER.getMaNV());//change status to 1 again
EduSys.this.dispose();
dn.setVisible(true);
}
}
}
});
t1.start();
但我遇到麻烦了!当我第二次登录时,我在前一个会话和当前会话中都被踢了,因为前一个会话将状态更改为2,然后当前会话也会收到该值。有人能帮我修一下吗!提前谢谢你 你可以有一个简单的方法。首先创建应用程序级简单缓存(简单的has映射将起作用),它将维护用户的状态。如果用户首次登录,则使用登录值(即user->1)为用户创建条目,并相应地更新数据库中的字段。 现在,如果用户试图再次登录,请在map中检查条目(如果已经登录),更改map和DB中的值,并终止该用户的所有会话 谢谢
TG请添加您迄今为止尝试过的代码。为什么不让应用程序无法再次启动?其他用户将您的问题标记为质量低下,需要改进。我对您的输入进行了重新措辞/格式化,使其更易于阅读/理解。请查看我的更改,以确保它们反映您的意图。但我认为你的问题仍然无法回答。你现在应该回答你的问题,使之更具体/清楚(见)。如果您还有其他问题或反馈,请随时给我留言。我同意您的看法:您的问题实在太广泛了。我们不会为您设计解决方案,我们会帮助您解决特定的编程问题@Stultuske如果有人忘记注销,那么他们就不能在其他任何地方登录!