【发布时间】:2012-03-14 14:50:25
【问题描述】:
关于 Servlet 3.0 编程安全性,当会话超时时,无法调用 HttpServletRequest#logout()。
用户是否保持登录到 JAAS?
如果是这样,在会话超时后处理退出 JAAS 的最佳做法是什么?
容器如何处理用户后续的再次登录请求并在会话超时后创建新会话?
顺便说一句,在使用 Servlet 3.0 编程安全性时,使用以下三种方法来处理会话超时的优缺点是什么:
HttpSessionListener#sessionDestroyed()- 使
@ManagedBean @SessionScoped LoginManager实现HttpSessionBindingListener并在valueUnbound中执行一些操作。 - 在 LoginManager 中使用 @PreDestroy 注释方法。
任何其他建议的方法/最佳实践建议肯定会受到赞赏。
【问题讨论】:
-
“核心 Java 服务器端面”p。 525 表示“目前,在使用容器管理的安全性时,没有关于注销或切换身份的规范。”
-
我还遇到过一些关于 J2EE 安全性的博客抱怨,抱怨无效会话不能很好地替代正式注销,但是这些博客比较老,是在 Servlet 3.0 之前编写的,它提供了一个表示以编程方式注销。
-
显然您的 CJSF 版本早于 Servlet 3.0。
标签: java jakarta-ee jaas servlet-3.0