JSF commandlink导航不正确

时间:2014-06-17 06:45:48

标签: servlets jsf-2 servlet-filters

在提出这些问题之前,我已经仔细评估了解决以下问题的可行性。

我有一封来自电子邮件viewRequest.xhtml?requestID=6的外部链接。我使用过滤器来拦截传入的请求,如果用户未经过身份验证,则会转发到login.xhtml页面。用户通过身份验证后,请求由FacesContext.getCurrentInstane().getExternalContext().redirect(redirected-url)转发,然后成功显示该页面。

现在,如果尝试从同一页面注销,即viewRequest.xhtml页面,请求的URI再次为viewRequest.xhtml,这会将我带到同一页面而不是注销并将我重定向到登录页面。< / p>

我真正担心为什么过滤器中的request.getRequestedURI仍然是viewRequest.xhtml而不是login.xhtml

参考代码

AuthenticationFilter - 用户未经过身份验证 - 在会话中添加请求的电子邮件链接

String from = req.getRequestURI();
if (req.getQueryString() != null) from += "?" + req.getQueryString();
req.getSession().setAttribute("from", from);
res.sendRedirect(req.getContextPath() + "/faces/pages/login.xhtml");

用户登录后

if (from != null && !from.isEmpty()) {
    externalContext.getSessionMap().remove("from");
    externalContext.redirect(from); *-----------Original URL re-direction---------*
    return null;
}
else{
       result = "adminHome";
    }

现在我们在viewRequest.xhtml页面中成功加载 - 现在点击退出

String from = req.getRequestURI();   <!--FILTER-->

requestedURI的值仍为viewRequest.xhtml

LoginController.java中的

logout()

FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return login;

请帮忙。非常感谢你。

0 个答案:

没有答案