问题标签 [viewexpiredexception]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
875 浏览

jsf - Wildfly Openshift 上的 ViewExpiredException

我在 Openshift wildfly 8.1 上托管了示例 J2EE webapp,我得到了 ViewExpiredException。之后,提供错误页面并在此异常上重定向到登录页面。登录成功后,登录页面仍然无法重定向到受保护的页面。

这是 使用 (user1/1234) 登录的应用程序http://wildfly81-sysguard.rhcloud.com

请在下面找到代码。

面孔-config.xml

web.xml

jboss-web.xml

pom.xml

登录.xhtml

登录页面过滤器.java

登录控制器.java

0 投票
1 回答
148 浏览

security - JSF ViewExpired 与 SecurityFilter 混合

因此,我已经查看了与 ViewExpiredException 相关的答案并使用 Ajax 请求处理这个问题,现在我已经很好地处理了。但是,我的配置无法正确获取 ViewExpiredException。

该应用程序有一个 SecurityFilter ,它监视每个请求并确定 url 是否需要经过身份验证的用户,然后检查用户是否经过身份验证(在会话中查找用户对象)。

问题是过滤器在 JSF 实际确定 ViewExpiredException 之前处理请求,因此我们将它们转发到登录页面,因为它们没有经过身份验证。发生这种情况是因为会话已过期并且用户对象不再在会话中。

如果我删除了安全过滤器,我们就会得到 ViewExpiredException。

我的问题是我应该使用不同的技术来验证授权吗?一种允许 JSF 处理请求然后检查授权的方法?

我还认为可能只在获取而不是发布帖子时检查授权,然后我确实得到了 ViewExpiredException 但是如果有人直接使用 POST,则会在授权中留下一个空白。

最大的问题是我无法在过滤器中确定会话是否超时或用户输入了未经授权的 URL。无论它们被重定向到登录页面,结果都是相同的,但随后无法确定错误消息。

注意:我们使用的是 MyFaces、JSF 2.2 和 PrimeFaces

任何建议都非常感谢!

0 投票
0 回答
1260 浏览

ajax - 使用 Primefaces 5.1 处理来自 AJAX 请求的 ViewExpiredExceptions

我有一个 JSF 2.1 + Primefaces 5.1 Web 应用程序,我想处理ViewExpiredExceptions。除了 web.xml 中的配置(通过 将异常映射到某个位置<error-page>),我读到我们需要在 ajax 请求期间抛出这些异常时对其进行处理。

Primefaces 为此提供了一个<p:ajaxExceptionHandler>。我尝试使用它,虽然我可以在服务器日志中看到异常被抛出,但我不能做任何其他事情。也许我以错误的方式使用它。例如,index.xhtml当发生此类异常时,我如何将用户发送到页面,刷新所有 ajax 组件?

我在 faces-config.xml 中定义了异常处理程序工厂:

并在我的模板页面中声明了 facelets 处理程序:

这是我针对这些异常的 web.xml 配置:

在使用这种方法不成功后,我尝试了异常处理程序的显式定义(检查会话是否存在 JSF),但也没有成功。

谁能告诉我如何解决这个问题?(我试图坚持使用普通的 JSF 和 Primefaces,虽然我知道 Omnifaces 提供了与 Primefaces 类似的解决方案,但我还没有尝试过)。

0 投票
1 回答
481 浏览

jsf - 忽略 ViewExpiredException 有错吗?

一周前,我研究了 ViewExpiredException,并阅读了一些关于它的内容。

我的问题,在某些情况下,我想忽略ViewExpiredException. 这些是不需要“会话”的情况,我的 Bean 是@RequestScoped. 例如,login.xhtml页面register.xhtmlpasswordRecovery.xhtml

在这些情况下,向用户显示您的会话已过期的错误是非常奇怪的。所以如果你打开登录页面,站了一会儿,当他通知你的数据并点击登录时,它会被转发到一个错误页面。我会忽略它并让用户透明。

所以,到目前为止,我的解决方案是创建一个ExceptionHandler来忽略这些异常:

然后,我创建了一个过滤器来检查用户是否已登录,如果没有,则重定向到登录页面(此过滤器仅适用于需要身份验证的页面):

所以当会话过期时,不会影响用户在登录和注册页面的体验。在我希望会话的页面上,由过滤器处理。

那将是一个很好的解决方案?是否有任何安全风险需要ViewExpiredException忽略ExceptionHandler

0 投票
2 回答
229 浏览

jsf - JSF 过多的 commandLinks (h:form) 导致 ViewExpiredException

我有一个 JSF 应用程序,它创建和呈现大约 50 个报告。这些报告以 PNG 格式呈现,并在图片下方显示一个表格。

此表使用带有 switchType="client" 的 RichFaces 4 togglePanel。togglePanel 仅用于折叠和展开表格。

问题是,我有时会在加载报告时收到 ViewExpiredExceptions。我的 numberOfLogicalViews 和 numberOfViewsInSession 是 14。我不想将其设置为 50,因为内存问题,并且因为实际上只有一个报告同时显示,所以它不应该是必需的。

我试图删除 h:form 标签,这些标签被视为logicalView。在我看来,togglePanel 不是需要表单的项目,因为它的开关类型是客户端(不是服务器和 ajax,需要表单标签)。但是命令链接确实需要表单标签,因为如果我删除它,会出现错误消息“此链接已禁用,因为它没有嵌套在 jsf 表单中”。

所以我尝试用commandButton 替换commandLink。这首先工作得很好,表格不再需要了。但不知何故,这种行为现在完全是随机的。有时表格可以展开,有时当我点击展开按钮时什么也没有发生。当我再次添加表单标签时,它工作正常,但没有解决我的 ViewExpiredException。

希望,有人可以在这里帮助我...

谢谢你的帮助!

邦特佩赫特

0 投票
0 回答
563 浏览

jsf - Wildfly 8.2.0:未抛出 ViewExpiredException

当我的页面处于 security-constraint时,我在Wildfly 8.2.0上运行的 JSF 应用程序(Primefaces 5)无法捕获 viewExpiredException 。会话超时后,服务器似乎没有抛出 javax.faces.application.ViewExpiredException 。

我的 web.xml:

还有我的 CustomExceptionHandler :

它是野蝇虫吗?在 glassfish 下,我对上面的代码和配置没有任何问题!

谢谢你的帮助

0 投票
1 回答
1556 浏览

jsf-2 - Spring Boot 中的 Primefaces PrimeExceptionHandlerELResolver

我有一个带有 Spring Boot 1.2.4(web,security,data-jpa)、Primefaces 5.2、JSF 2.2 (Mojarra 2.2.11) 的 Web 应用程序,没有任何 xml 配置文件。只有 faces-config.xml 用于 spring bean el 解析器:

一切正常。现在,我想用 primefaces 异常处理程序处理 ViewExpiredException:http: //www.primefaces.org/docs/api/5.2/org/primefaces/application/exceptionhandler/PrimeExceptionHandlerELResolver.html

我的问题是:我可以在 faces-config.xml 中注册另一个 el-resolver 吗?如果没有,我该如何解决这个问题?

提前致谢。

编辑 :

我决定使用另一个 aproche。非常感谢Ajax 调用的会话超时处理

0 投票
0 回答
718 浏览

jsf-2 - 将 JSF 表单提交到不同的主机时出现 ViewExpiredException

我想为管理员创建登录功能,以便管理员可以作为任何用户(在用户门户中)登录(从管理员门户)。(这是在两个不同主机上运行的两个不同门户)。

在 Admin-portal 中,我写过

问题出在用户门户中。
索引.jsf

自定义登录 bean

CustomLogin bean 是会话范围的,并且在构造后调用方法“customLoginPage”。所以它在 J​​SF 生命周期的“RESTORE_VIEW”阶段运行。

我收到以下错误:

很少有可能有用的web.xml内容

我已阅读BalusC 的 ViewExpiredException。但是这里对用户门户的每个请求都是新鲜的。另外,当我将 javax.faces.STATE_SAVING_METHOD 更改为客户端时,我收到“GZIP 异常”。

0 投票
1 回答
1564 浏览

jsf - javax.faces.application.ViewExpiredException:无法恢复视图

我有一个带有单个视图 index.xhtml 的移动 webapp。我仅使用 POST 请求动态更改此视图。基本上我所有的 ViewScopedBean 都是 SessionScopedBean。我不知道它是否是移动 webapp 的最佳解决方案,但它确实存在(动态更新看起来比重新加载一个全新的页面要快)。

在本地主机上一切都很好,即使在生产中当我使用远程服务器的 ip 访问移动 web 应用程序时也是如此。当我在动态视图中使用域名时,如果对发布请求执行某些操作,则会出现此异常

我知道为什么会发生此异常,但我不知道为什么我的视图已过期。我应该去哪里看?我可以发布我的代码,但它真的很乱。

0 投票
0 回答
918 浏览

jsf - 显示部分响应而不是 html,刷新后显示 html

我已经实现了这个问题的答案:Session timeout and ViewExpiredException handling on JSF/PrimeFaces ajax request

当 AJAX 请求完成并且出现 ViewExpiredException 时,它会呈现我的会话过期页面,该页面有一个指向登录页面的链接。但是当您再次登录时,它会向我显示:

当我按 F5 时,会显示正常的 HTML 内容。为什么会发生这种情况,我该如何解决?

编辑:为了澄清,登录后它会将我带到发生 ViewExpiredException 的同一页面。