繁体   English   中英

jsf中的会话超时

[英]Session timedout in jsf

我有一个问题,我的整个JSF应用程序都基于Ajax请求

我们使用Ajax进行所有请求和所有操作

问题是当会话超时并且用户尝试在页面上执行任何操作时,它什么也不做。

我知道该会话已超时,但我无法赶上它。 经过一番尝试后,我终于能够捕捉到每个请求之后会话超时的情况。 但是现在的问题是将用户再次从过滤器或托管bean甚至使用js重定向到登录屏幕

请任何人都可以告诉我该如何将用户重定向到登录屏幕

还请记住,我的应用程序中有三个页面:仅登录,索引和注销,所有内容都在索引页面中

提前致谢

您可以使用类似的方法在超时过滤器中进行ajax重定向。 你可以参考这个线程

String facesRequestHeader = httpServletRequest
        .getHeader( "Faces-Request" );

boolean isAjaxRequest = facesRequestHeader != null
        && facesRequestHeader.equals( "partial/ajax" );

if( isAjaxRequest )
{
        String url = MessageFormat.format( "{0}://{1}:{2,number,####0}{3}",
        request.getScheme(), request.getServerName(),
        request.getServerPort(), timeoutPath );

        PrintWriter pw = response.getWriter();
            pw.println( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" );
        pw.println( "<partial-response><redirect url=\"" + url
        + "\"></redirect></partial-response>" );
        pw.flush(););
}
else
{
    httpServletResponse.sendRedirect( timeoutPath );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM