如何判断系统中登录用户数

在网上找了下,大概有两种解决方案:
1、通过数据库状态位判断该用户是否已经登录。
2、利用session监听器监听每一个登录用户的登录情况。
个人想了下,第一种解决方案很简单,但需要考虑用户非正常退出的情况,如直接关闭浏览器等等,可用性较低。
接下来,主要介绍第二种方案的具体实现:

A.用户登录后,先去数据库查询该登录名是否存在、是否锁定,在登录名存在且非锁定的情况下,从application内置作用域对象中取出所有的登录信息,查看该登录名是否已经登录,如果登录了,就友好提示下;反之表示可以登录,将该登录信息保存在application中。

//
//所有的登录信息
Map<String, String> loginUserMap = (Map<String, String>) super.getApplicationAttr(Constant.LOGIN_USER_MAP);
boolean isExist = false;
String sessionId = super.getSessionId(false);

if(loginUserMap==null){
loginUserMap = new HashMap<String, String>();
}

for (String username : loginUserMap.keySet()) {
//判断是否已经保存该登录用户的信息,是否为同一个用户进行重复登录
if(!username.equals(user.getFuUserName()) || loginUserMap.containsValue(sessionId)){
continue;
}
isExist = true;
break;
}

if(isExist){
//该用户已登录
//
}else {
//该用户没有登录
loginUserMap.put(result.getFuUserName(), sessionId);
//
}
//

B.登录考虑完之后,来考虑考虑退出。
用户正常退出时,我们需要将该用户的登录信息从session中移除。我们可以写一个Session监听器,监听sessioon销毁的时候,我们将登录的用户注销掉,也就是从application中移除。表示该用户已经下线了。 

//
public void sessionDestroyed(HttpSessionEvent event) {  
        //       
        //在session销毁的时候 把loginUserMap中保存的键值对清除   
        User user = (User)event.getSession().getAttribute("loginUser");  
        if(user!=null){  
                Map<String, String> loginUserMap = (Map<String, String>)event.getSession().getServletContext().getAttribute("loginUserMap");  
                loginUserMap.remove(user.getFuUserName());  
event.getSession().getServletContext().setAttribute("loginUserMap",loginUserMap); 
        } 
        //
} 
//

另外,还有一个问题,如果说登录的用户突然关闭了浏览器而没有点击退出按钮。那么可以利用beforeunload 事件,在浏览器刷新或者关闭的时候触发。

//在刷新或关闭时调用的事件

$(window).bind('beforeunload',function(){
   $.ajax({
       url:"${ctx}/system/user/user!logout.action",
       type:"post",
       success:function(){
           alert("您已退出登录");
       }
   });
});

这样基本就实现了需求了,通过这样可以计算出登录的用户数。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在qt学生管理系统添加用户权限功能,可以通过以下步骤实现: 1.定义用户权限:首先,需要明确需要哪些用户权限,例如可以分为管理员、教师、学生等角色。每个角色具有不同的用户权限,比如管理员可以对系统进行配置和管理,教师可以添加学生信息,学生可以查看自己的信息等。 2.设置用户权限:在qt学生管理系统可以新建一个用户表,此表用来保存用户信息。在用户表添加一列用于存储用户权限,可以设置为0、1、2等数字来表示不同的权限级别,也可以设置为相应的角色名称。 3.验证用户权限:实现用户权限功能需要在程序加入验证用户权限的代码。在登录系统时,通过验证用户权限来判断用户的角色和权限。如果是管理员,则可以进入系统进行配置和管理,如果是教师,则只能添加和修改学生信息,如果是学生,则只能查看自己的信息。 4.修改用户权限:在系统运行期间,可能需要更改用户的权限。在qt学生管理系统,可以新建一个用户管理界面,管理员可以在此界面修改用户权限。用户可以通过自己的权限来判断是否具有修改其他用户权限的权限,避免权限泄露。 通过以上步骤,就可以在qt学生管理系统添加用户权限功能了。用户权限功能能够保证系统的安全性和稳定性,也能够有效地管理用户权限,提高使用效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值