Jsf 会话超时时自动重定向到登录页面

Jsf 会话超时时自动重定向到登录页面,jsf,redirect,primefaces,session-timeout,Jsf,Redirect,Primefaces,Session Timeout,我希望在我所有jsf页面的标题中应用相同的代码,它将自动检测会话何时超时并重定向到登录页面 我尝试了一些在线教程中的代码,但没有成功 有人能教我吗?这不是很好的方法。使用简单登录或会话过期筛选器: } web.xml <!-- Login filter --> <filter> <filter-name>LoginFilter</filter-name> <filter-class>com.examples.w

我希望在我所有jsf页面的标题中应用相同的代码,它将自动检测会话何时超时并重定向到登录页面

我尝试了一些在线教程中的代码,但没有成功


有人能教我吗?

这不是很好的方法。使用简单登录或会话过期筛选器:

}

web.xml

    <!-- Login filter -->
<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.examples.webapps.filterlogin.filters.LoginFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

逻辑过滤器
com.examples.webapps.filterlogin.filters.LoginFilter
逻辑过滤器
/*

在服务器端,可以让代码知道会话超时。使用它,您可以设置一个cookie,该cookie指示实际会话超时发生的时间(未提及活动会话超时还是空闲超时)。页面上运行的javascript可以以定时方式读取cookie,并在超过超时值时重定向用户

这是众多方法之一,希望能有所帮助


我认为过滤不是一种必需的方法,因为要求是指自动重定向到登录屏幕

您尝试了什么,失败在哪里?“一些在线教程”是为了模糊。PrimeFaces有一个空闲的监视器。我想您的意思是在
中使用
/*
,但是在配置中,此筛选器甚至会拦截对静态资源(如js和css文件)的请求,并在您请求登录页面时将它们重定向到登录页面:)是,当然!:)这只是一个例子。要排除静态内容,我们可以使用如下内容:
theFilter org.demo.CustomServletFilter excludePatterns public/*
并在过滤器中获取它们
this.excludePatterns=cfg.getInitParameter(“excludePatterns”)解析和检查。我能知道你为什么写->这不是很好的方法吗?这只是我的观点。JSF页面是“视图”(在MVC模式的上下文中)。在“视图”上添加逻辑,这将检查会话不是很好的解决方案。过滤器是专门为这些东西设计的。只需添加一些缺失的部分。。您应该在web.xml中配置会话超时。此外,此筛选器仅在浏览器发出实际请求时才检查会话中的登录对象,但您还应该有一个客户端javascript计时器在过期时发送请求。我觉得这一个很好。但我认为,人们经常会实现空闲超时,只有当用户没有与应用程序交互时,才需要启动计时器,并在任何用户操作时重置计时器。此外,您还可以在html中从服务器获取超时值,作为一个全局javascript变量,不一定在cookie中:)确切地说,cookie只是我提到的一种方式,尽管不是真正推荐的。我们有一个应用程序,我们甚至跟踪鼠标移动/按键来计算空闲超时,而不是通常的服务器交互。还有一点需要注意的是,如果应用程序希望在提交之前有更多的用户键入,那么最好通过后台ajax调用与服务器保持交互,以确保服务器不会因为缺少服务器交互而经历“空闲超时”,尽管客户端上的JS代码知道用户正在积极键入。如我所说,不只是与服务器的任何用户交互;)跟踪所有这些事件是一件痛苦的事情,但幸运的是,有这么多人编写了js插件,让我们的生活变得轻松:)提醒服务器用户仍在使用该应用程序很重要,但使用我们的高响应性应用程序,我们更可能与服务器进行任何视图更新
    <!-- Login filter -->
<filter>
    <filter-name>LoginFilter</filter-name>
    <filter-class>com.examples.webapps.filterlogin.filters.LoginFilter</filter-class>
</filter>

<filter-mapping>
    <filter-name>LoginFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>