【问题标题】:Limit number of users accessing a java web application限制访问 Java Web 应用程序的用户数
【发布时间】:2014-09-04 11:57:40
【问题描述】:

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

  1. 一次只能有 N 个用户登录。
  2. 同一用户无法从其他系统/浏览器登录。
  3. 如果 N+1 用户尝试登录,则显示消息并拒绝。
  4. 如果用户无法正常注销如何处理(关闭浏览器/会话超时/网络问题/等..)

我正在考虑使用静态地图并为登录和注销创建一个条目。 你能提供任何建议/想法吗? 谢谢 -吉吉

【问题讨论】:

    标签: java web-applications


    【解决方案1】:

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

    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,则不再创建

    【讨论】:

      【解决方案2】:

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

      1) 从 state=1 的用户中选择 count(*) -- 假设 1 已登录

      2) 从name=?的用户中选择状态

      3)如果sql in 1返回太多,直接拒绝登录

      4) 超时。恐怕这是在无状态网络世界中唯一有效的方法。如果用户在 30 分钟内(或任何超时时间)都没有签到,请将他设置为注销。用户的任何行为都应构成“签到”

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-18
        • 1970-01-01
        • 2018-09-13
        • 2017-07-19
        • 2012-07-14
        • 1970-01-01
        • 2021-08-15
        相关资源
        最近更新 更多