当同一帐户再次登录时自动淘汰用户?

时间:2018-09-18 05:45:55

标签: java sql-server swing

感谢您的所有答复!这是我的代码!请发表您的评论! 我创建了一个列来保存USER的当前状态

    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();
                }

在MainFrame中,我使用一个线程来连续更新状态

    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,所以当前会话也收到该值。有人可以帮我解决这个问题!预先谢谢你!

1 个答案:

答案 0 :(得分:0)

您可以采用一种简单的方法。首先创建应用程序级别的简单缓存(一个简单的has map将起作用),该缓存将维护用户的状态。如果用户是首次登录,请使用登录值(即USER-> 1)为用户创建条目,然后在DB中相应地更新字段。 现在,如果用户尝试再次登录,请在地图上检查是否已登录的条目(如果其已经登录,则更改地图和DB中的值,并终止该用户的所有会话

谢谢 TG