在JSP应用程序中最多强制一个用户
我正在使用JSP开发一个web工具,其中有许多不同类型的用户(即管理员、来宾、支持写的用户等等)。由于这将是一个基于订阅的系统(即用户为3/6/12个月的订阅付费),我需要同时强制每个用户最多登录1次。 例如,假设约翰·史密斯先生订阅了这个系统;我不想让他把他的登录信息给他的朋友,这样他们就可以同时在两台不同的计算机上使用这个系统。在JSP应用程序中最多强制一个用户,jsp,session,login,Jsp,Session,Login,我正在使用JSP开发一个web工具,其中有许多不同类型的用户(即管理员、来宾、支持写的用户等等)。由于这将是一个基于订阅的系统(即用户为3/6/12个月的订阅付费),我需要同时强制每个用户最多登录1次。 例如,假设约翰·史密斯先生订阅了这个系统;我不想让他把他的登录信息给他的朋友,这样他们就可以同时在两台不同的计算机上使用这个系统。 我如何处理这种情况?当用户登录时,您会希望使他们当时可能拥有的任何其他登录无效。这意味着对每个请求都进行检查,但无论如何,您都应该将其用于基本验证。例如,您可以检查
我如何处理这种情况?当用户登录时,您会希望使他们当时可能拥有的任何其他登录无效。这意味着对每个请求都进行检查,但无论如何,您都应该将其用于基本验证。例如,您可以检查他们访问的IP地址或servlet会话id等。不管怎样,这些都是需要跟踪的好事情,尤其是对于事实/报告日志记录 然后,您可以利用注销的烦恼来实施您的策略,而不会使您无法从一个系统转到另一个系统并继续使用该界面 使用上述事实/报告日志分析登录,查看是否有任何使用模式与典型的单用户不匹配-例如,会话在两台或多台计算机之间频繁交换,尤其是在相似的时间
HttpSession.getId()
。这可以在从用户名到会话ID的应用程序范围映射中,也可以在数据库中request.getSession().getId()
是否是为该用户存储的请求request.getSession().invalidate()
注销用户另外,除非在超时后清除存储的会话ID,否则无法拒绝第二次登录尝试,因为无法判断第一次会话是否仍处于活动状态。我不知道您正在使用哪个框架(如果有的话)(您只指定了JSP)。但是,如果应用程序的其余部分正在利用Spring框架,那么这个特性已经在项目的中实现了。它支持多种检测和处理并发登录的方法,包括上面Peter Hilton建议的方法