有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

servlets Java EE+GlassFish:如果用户在其他地方登录,则强制用户注销

我希望我关于标题的问题有意义,如果没有,就说:机器A,通过网络浏览器,我以admin的身份登录机器B,然后以admin的身份登录,机器A中的网络浏览器应该强制用户admin注销。我对此进行了一些思考,我认为如果我试图手动实现这一点,将会很难看。我觉得这可以用玻璃鱼做

我使用JavaEE6+Glassfish v3。0.1. 身份验证和授权是通过Glassfish中设置的jdbcRealm实现的


共 (1) 个答案

  1. # 1 楼答案

    • 创建并映射(使用web.xml中的<listener>..</listener>)一个HttpSessionListener
    • sessionCreated(..)上,将对会话的引用存储在ServletContext中的Map<String, Session>
    • 当用户登录时,从ServletContext获取Map,并查看是否有任何会话具有与会话属性相同的用户/用户ID
    • 如果有,session.invalidate()
    • 如果你想在集群中使用它,你可以使用数据库来存储信息,以便从任何地方都可以访问它,或者使用分布式缓存(JBoss缓存、Ehcache)