Java EE + GlassFish:强制用户在他/她登录其他地方时注销

时间:2010-09-06 20:06:41

标签: java servlets java-ee glassfish

我希望关于标题的问题有意义,如果不是,请说:机器A,通过网络浏览器我以admin身份登录,我转到机器B,然后以{{1}身份登录,机器A中的Web浏览器应强制注销用户admin。我给了这个想法,我认为如果我尝试手动实现它会很难看。我有一种感觉,这可以在Glassfish中完成。

我使用Java EE 6 + Glassfish v3.0.1。身份验证和授权是通过Glassfish

中设置的jdbcRealm实现的

1 个答案:

答案 0 :(得分:5)

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