限制访问Java Web应用程序的用户数

时间:2014-09-04 11:57:41

标签: java web-applications

我的问题与Limit number of users accessing a web ASP .NET application相同,但我在java6 tomcat7和struts 2中寻找解决方案 要求:

  1. 一次只能有N个用户登录。
  2. 同一用户无法从其他系统/浏览器登录。
  3. 如果N + 1用户尝试登录,则显示消息并拒绝。
  4. 如果用户无法正常退出,请如何处理(关闭浏览器/会话超时/网络问题等)。
  5. 我在想使用静态地图并为登录和注销创建一个条目。 你能提出任何建议/想法吗? 谢谢 -Jiggi

2 个答案:

答案 0 :(得分:3)

您可以使用以下代码计算活动会话数

public class SessionCounter implements HttpSessionListener {  

     private static int activeSessions = 0;  

    public void sessionCreated(HttpSessionEvent se) {  
        activeSessions++;  
    }  

     public void sessionDestroyed(HttpSessionEvent se) {  
        if(activeSessions > 0)  
            activeSessions--;  
    }  


     public static int getActiveSessions() {  
        return activeSessions;  
     }  
 }  

这样您就可以限制会话。例如:如果有效会话为20,则不再创建

答案 1 :(得分:1)

您可能希望将用户状态保留在表格中。

1)从state = 1的用户中选择count(*) - 暂停1登录

2)从名为=?

的用户中选择状态

3)如果1中的sql返回太多,则只需拒绝登录

4)超时。我担心这是唯一适用于无状态网络世界的东西。如果用户没有办理登机手续30分钟(或任何超时),请将其设置为退出。用户的任何行动都应构成“登记入住”

除了简单的状态指示器外,您还可以保留“最后一次活动”的日期,如果一段时间内没有记录任何活动,它可以作为自动超时。