如何检查,当用户由会话过期注销

我有在连接到MSSQL数据库的GlassFish使用j_security_check验证与jdbcRealm GlassFish的JSF Web应用程序。 有没有什么办法来检查,例如,如果存在一个给定用户名活跃的豆? 我只是想显示网页谁在线上。 我的猜测:

  1. 保持变量在数据库和登录/注销改变它。 如果有人剪掉注销,但他的会话过期而出现问题。 不是我没有可能性来检查,如果他在仍被记录。
  2. 保持布尔变量豆和登录/注销改变它。 问题是如在前面的机会。

有没有办法改变这样的变量,而会话过期? 也许一些其他的办法是比较常见?

--------------解决方案-------------

如果有人剪掉注销,但他的会话过期而出现问题。 不是我没有可能性来检查,如果他在仍被记录。

你必须通过实施的可能性HttpSessionListener

@WebListener
public class YourUserSessionListener implements HttpSessionListener {

@Override
public void sessionCreated(HttpSessionEvent event) {
// NOOP.
}

@Override
public void sessionDestroyed(HttpSessionEvent event) {
YourUser yourUser = event.getSession().getAttribute("yourUser");

if (yourUser != null) {
yourUser.logout(); // Update DB.
}
}

}

YourUser是您的会话范围JSF托管bean代表登录的用户。

或者,当你在JSF2(你的问题的历史证明),把@PreDestroy在会话中注销方法范围的JSF托管bean代表登录的用户:

@ManagedBean
@SessionScoped
public class YourUser {

// ...

@PreDestroy
public void logout() {
// Update DB.
}

}

这样,该方法将在bean之前调用被摧毁的会话过期。

分类:JSF 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.486 (s). 10 q(s)