JSF 2 ajax 按钮在会话超时后不进行服务器调用

发布于 2024-11-03 10:22:28 字数 903 浏览 0 评论 0原文

我的应用程序正在使用RSA身份验证管理器进行身份验证

一旦用户登录,其登录userid 是从请求标头中检索的,角色是通过 LDAP 查找确定的。那么 JSF2 应用程序使用此角色来显示页面上的某些部分以及其他依赖于授权的区域。

(注:除了 RSA 之外,还可以使用 Tivoli)。

应用程序超时由 web.xml 会话超时值控制,当前设置为 30 分钟。 RSA 超时设置为 2 分钟(用于测试)。当 RSA 会话在应用程序会话之前过期,并且用户执行任何服务器操作(例如单击按钮)时,RSA 会自动将用户转发回登录页面。 一切正常。

为应用程序中的某些按钮添加了 ajax 功能。

之后,我使用以下 f:ajax 标记<< h:commandLink id =“todayOrdersLink”值=“someValue” 动作=“#{someAction}” onclick="clearAllElementsInHiddenDivs('confirmationSearch'); > < f:ajaxexecute="@form" onevent="showWorkingIndicator" /> < /h:命令链接>

现在,当 RSA 会话过期并且我单击这样的按钮时,服务器调用不是由该按钮进行的​​,而是显示 javascript 弹出窗口,指出格式错误的 XML:文档为空。

但是,如果我单击 F5 按钮或浏览器刷新按钮强制服务器调用,则转发到登录页面的早期行为仍然有效。在 RSA 会话过期后,我必须以某种方式能够从 ajaxified 按钮进行服务器调用。

任何帮助将不胜感激。

My application is authenticating using RSA authentication manager

Once the user is logged in, its logged in userid is retrieved from request header, role determined from LDAP lookup. then this role is used by the JSF2 application to show certain sections on the page and other authorization dependent areas.

(Note: Instead of RSA this could use Tivoli as well).

Application timeout is controlled by web.xml session-timeout value which is currently set to 30 mins. And RSA timeout was set to 2 mins (for testing). When the RSA session expires before the application session , and the user performed any server operation like button click, the user was forwarded back to the login page by RSA automatically.
It was working fine.

AFter I added ajax functionality to some of the buttons in the application, using the following f:ajax tag

< h: commandLink id="todayOrdersLink" value="someValue"
action="#{someAction}"
onclick="clearAllElementsInHiddenDivs('confirmationSearch'); > < f:ajax execute="@form" onevent="showWorkingIndicator" />
< / h:commandLink >

now when the RSA session expires and I click on such a button, the server call is not made by the button, it rather shows javascript popup saying malformed XML: Document is empty.

However if i click F5 button or browser refresh button to force a server call, then the earlier behaviour of forwarding to login page still works. I have to somehow be able to make a server call from the ajaxified buttons after the RSA session expires.

any help will be apprecaited.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

同展鸳鸯锦 2024-11-10 10:22:28

这是因为视图不再存在并且服务器无法在服务器上重新创建视图来执行ajax,您可以尝试类似的操作:

var onError = function onError() {
   window.location = 'http://domain.com/loginPage.jsf';
 };
jsf.ajax.addOnError(onError);

This is because the view doesn't exists anymore and the server can't recreate the view on the server to execute the ajax, you can try something like that :

var onError = function onError() {
   window.location = 'http://domain.com/loginPage.jsf';
 };
jsf.ajax.addOnError(onError);
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文