我想知道以下内容:
当请求进入JSF servlet时,如果会话bean指示会话尚未登录,是否可以重定向到会话超时页面?
例如:
<navigation-rule>
<from-view-id>*</from-view-id>
<navigation-case>
<if>#{not userBean.loggedIn}</if>
<to-view-id>/login.jsf</to-view-id>
<redirect/>
</navigation-case>
</navigation-rule>
显然,它需要从此规则中排除login.jsf ......但是你明白了。我尝试了类似的东西,它似乎不起作用,即使它确实如此,它将如何处理Bookmarked URLS?
如何在JSF2中实现此功能?此外,是否有类似于JSF2中的ASP.NET的global.asax,或者是关于它的PhaseListeners / Filters?
谢谢。
答案 0 :(得分:1)
导航规则不适合这种功能,因为NavigationHandler
直到生命周期的很晚才被调用(Invoke Application)。
alt text http://www.ibm.com/developerworks/library/j-jsf2/basic-lifecycle.gif
您可以使用declarative security(在web.xml中)重定向到登录页面。或者,如果您希望更精细地控制发生的情况,可以使用Filter重定向。