- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于记录目的,我有兴趣检测 JSF 应用程序中何时发生 session 超时。
我已经实现了一个 PhaseListener 来检查用户是否已登录并且其 session 是否已处于 Activity 状态。我的 afterPhase 方法的实现是:
var url_accepted(在代码中使用)包含用户应有权访问的公共(public)页面列表,以便提供登录表单。
public void afterPhase(PhaseEvent event) {
FacesContext context = event.getFacesContext();
HttpSession session = (HttpSession) context.getExternalContext().getSession(true);
AuthenticationBean sessionBean = (AuthenticationBean) session.getAttribute("sessionBean");
String url_req = context.getViewRoot().getViewId();
//1. Check if user has a session and is logged in:
if(((sessionBean == null) || (sessionBean != null && !sessionBean.isLoggedIn())) && !url_accepted.contains(url_req)){
context.getApplication().getNavigationHandler().handleNavigation(context,null,"auth_error");
return;
}
//2. Code continues in order to check if a logged user has permissions to access the requested page(not relevant):
}
当用户由于 session 超时而断开连接时,PhaseListener 无法从 ExternalContext 检索我的 sessionBean,并将 null 分配给 sessionBean 属性。此时我无法区分用户是之前没有登录过还是超时断开连接。
我读到可以使用 errorPages 来检测 ViewExpiredException 异常并将 View 重定向到特定页面。但我不知道是否可以在我的源代码中管理此异常。
我的问题是:我可以在 PhaseListener 实现中捕获此 ViewExpiredException 以处理 session 超时吗?
提前致谢。
最佳答案
我在 JSF 项目中遇到过同样的情况。解决方案是使用过滤器来捕获过期的 session 。 BalusC(JSF专家)解释了这个问题并展示了一个很好的例子:
另外,别忘了加上session.invalidate()
在您的注销方法和 session 超时处理程序中。
关于java - 是否可以在 PhaseListener 中捕获 ViewExpiredException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11666210/
我尝试关注不同的帖子,了解如何在 GlassFish 3.1 上的 Mojarra 2.1.0(使用 RichFaces 4)中处理 ViewExpiredException。但是我在 web.xml
我让一些带有表单的选项卡打开,当我按下命令按钮时( session 过期一段时间后)我收到一个 java 脚本警报说: serverError: class javax.faces.applicati
一周前,我研究了 ViewExpiredException,并阅读了几篇关于它的文章。 viewExpiredException JSF How to control web page caching
我想弄清楚如何防止 Session Fixation在 Glassfish 3.1 中的 JSF 登录表单上。 使用 Servlets 很容易做到,所以我试图对 JSF 做同样的事情(基于这个问题:R
我有一个使用rich:fileUpload 上传文件的页面。对于较小的文件,这可以正常工作,但是对于较大的文件 (+80MB),我通常会收到 ViewExpiredException。我已经尝试寻找解
我有包装器 PrimeFaces.ajax.AjaxResponse 来处理 ViewExpiredException(重新加载页面): var handleViewExpired = functio
JSF 应用程序可以在 session 过期时抛出 ViewExpiredException。当您的系统上有 guest 时,此事件将很常见。因此,应用程序将处理此事件而不会给访客带来任何麻烦,如下所
我正在 Glassfish v3 上开发一个 JSF 2.0 应用程序,我正在尝试处理 ViewExpiredException。但无论我做什么,我总是收到 Glassfish 错误报告,而不是我自己
我在我的项目中使用 JSF 2.0 和 Primefaces。 我有两个 xhtml 页面,即 Cars.xhtml 和 Bikes.xhtml。 我正在使用 ViewScoped 支持 bean。
我的 h:commandButton "Login"有问题:当我使用 @ViewScoped 并按下此按钮时,会出现 ViewExpiredException,但是当我使用 @SessionScope
出于记录目的,我有兴趣检测 JSF 应用程序中何时发生 session 超时。 我已经实现了一个 PhaseListener 来检查用户是否已登录并且其 session 是否已处于 Activity
在我的网络应用程序中,当 session 过期并且用户发起请求(完整页面或 AJAX)时,用户将被重定向到登录页面,并显示 session 已过期的消息。问题是,当登录页面保持打开的时间足够长以致 s
我已将以下内容放入我的 web.xml 中: javax.faces.application.ViewExpiredException /expiredIndex.jsf
我们最近将一个主要平台从 jsf 1.2 升级到了 2.0。升级后,我们每小时都会收到几个 ViewExpiredException 错误。通过阅读该主题,这似乎是 session 过期时的预期异常,
我有一个 Web 应用程序当前部署在 Wildfly 22 上,使用 JSF 2.3 和 OpenJDK 11。我目前正在将登录页面从 j_security_check 迁移到编程登录,按照这篇文章中
我有一个 jsf 1.2 应用程序,索引页中有一些链接。该链接可通过在新的 jquery 对话框中单击来打开。每个链接都会在不同的对话框中打开我的应用程序的新页面,因此,应用程序可以在单个页面的多个对
我按如下方式设置我的网络应用程序: javax.faces.application.ViewExpiredException /WEB-INF/include/vi
我们的应用程序使用的是 SUN JSF 1.2、WebSphere 7.0,我们仅在负载测试期间收到 ViewExpiredException 我已浏览以下链接 javax.faces.applica
我遇到一个问题,每次我重新部署我的应用程序时,任何现有 session 都会中断并且请求会导致 ViewExpiredException .相关问题或外部邮件列表/论坛帖子中的建议似乎都无法解决此问题
我使用 jsf、prettyfaces 和 hibernate 创建了此网页我环顾四周,大多数人说这个错误是因为缓存大多数人在登录、注销并尝试重新登录后发现此错误但我在登录时发现此错误,并且当我尝试导
我是一名优秀的程序员,十分优秀!