这让我感到疯狂,有没有什么好方法可以从Filter重定向JSF页面?
这是我在doFilter()
try {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
LoginAgent loginAgent = (LoginAgent) req.getSession().getAttribute("login");
if (loginAgent == null || !loginAgent.isLoggedIn()) {
res.sendRedirect("requireslogin.xhtml");
}
else {
chain.doFilter(request, response);
}
我得到的只是一个空白页面。我尝试了其他方式,但没有一个工作,我没有遇到一个很好的例子重定向到另一个JSF页面,而不涉及太多的工作。
这有什么解决方法吗?基本上,过滤器用于禁止匿名用户访问页面。
答案 0 :(得分:1)
仅为了您的信息,如果您遇到与我相同的问题,并想要另一种方法,您可以使用phaseListener来检查用户登录状态。
我仍然坚持使用过滤器,但我认为我最好选择这种方式(PhaseListener),至少对我来说更容易理解,更优雅(至少在我眼里,哈哈)。
你可以按照这个家伙博客的指南进行操作。太棒了。
http://gurolerdogan.blogspot.com/2010/04/controlling-login-by-phaselistener-in.html
虽然有些人可能会遇到问题,因为当用户未登录时,每个页面都应重新路由到登录页面,这可以通过在faces-config中重新定义导航规则轻松解决。
感谢任何与我处理JSF的小伙伴关系!特别是你,BalusC:)