Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets JSF命令链接不正确的导航_Servlets_Jsf 2_Servlet Filters - Fatal编程技术网

Servlets JSF命令链接不正确的导航

Servlets JSF命令链接不正确的导航,servlets,jsf-2,servlet-filters,Servlets,Jsf 2,Servlet Filters,在提出这些问题之前,我已经仔细评估了解决以下问题的可行性 我有一个来自电子邮件的外部链接viewRequest.xhtml?requestID=6。我使用一个过滤器来截获传入的请求,如果用户没有经过身份验证,它将被转发到login.xhtml页面。用户通过身份验证后,请求由FacesContext.getCurrentInstane().getExternalContext().redirect(重定向的url)转发,然后成功显示页面 现在,如果尝试从同一页面(即,viewRequest.xht

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

我有一个来自电子邮件的外部链接
viewRequest.xhtml?requestID=6
。我使用一个过滤器来截获传入的请求,如果用户没有经过身份验证,它将被转发到
login.xhtml
页面。用户通过身份验证后,请求由
FacesContext.getCurrentInstane().getExternalContext().redirect(重定向的url)
转发,然后成功显示页面

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

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

参考代码

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

用户登录后

现在我们进入viewRequest.xhtml页面-加载成功-现在单击注销

请帮忙。多谢各位

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";
    }
String from = req.getRequestURI();   <!--FILTER-->
FacesContext.getCurrentInstance().getExternalContext().invalidateSession();
return login;