Jsf 在登录对话框上登录后重定向
tl;dr:我的问题实际上可以恢复到如何通过字符串刷新页面(当get参数未知时) 我有两个登录用户的场景:Jsf 在登录对话框上登录后重定向,jsf,authentication,redirect,Jsf,Authentication,Redirect,tl;dr:我的问题实际上可以恢复到如何通过字符串刷新页面(当get参数未知时) 我有两个登录用户的场景: 未经身份验证的用户访问受保护的页面他被重定向到登录页面。登录时,他会被重定向到他主要尝试访问的页面 未经验证的用户单击“我的页面”上的按钮,如果该用户未经验证,将显示登录模式对话框 例如: <!-- user connected --> <p:commandButton action="#{pollVoteBean.vote}" value="#{strings.Vo
- 未经身份验证的用户访问受保护的页面他被重定向到登录页面。登录时,他会被重定向到他主要尝试访问的页面
- 未经验证的用户单击“我的页面”上的按钮,如果该用户未经验证,将显示登录模式对话框
<!-- user connected -->
<p:commandButton action="#{pollVoteBean.vote}" value="#{strings.Vote}" rendered="#{userNav.isUserConnected}"/>
<!-- user disconnected -->
<h:panelGroup rendered="#{!userNav.isUserConnected}">
<p:commandButton type="button" value="#{strings.Vote}" onclick="PF('regSign').show()"/>
<!-- if the user clicks here a log in dialog appears and he can log in. -->
</h:panelGroup>
但是对于对话框,我想刷新页面。如何更改上面的代码,使其同时考虑这两种情况
我就快到了,但是我无法获得带有参数的正确url(当然这些参数是未知的):
(以上代码假定用户已正确验证)。
另外,我的对话框是
dynamic=“true”
我最终将该方法一分为二,因为我没有找到简单的方法
public String signInUser() {
if (trySignIn()) {
if (null != lastUrl && !"/signin".equals(lastUrl))
return lastUrl + "?faces-redirect=true";
else
return "/news?faces-redirect=true";
} else {
return "signin.xhtml?faces-redirect=true";
}
}
public void signInFromDlg() {
trySignIn();
}
然后javascript刷新完成。@Tiny我最终选择了简单的方法,将我的函数一分为二。你能告诉我为什么你说这不是一个合理的要求吗?
lastUrl = getCorrectUrl(((String) FacesContext.getCurrentInstance()
.getExternalContext().getRequestMap()
.get(RequestDispatcher.FORWARD_REQUEST_URI)));
currentUrl = FacesContext.getCurrentInstance().getViewRoot()
.getViewId();
if ("/signin".equals(currentUrl)) {
if (null != lastUrl && !"/signin".equals(lastUrl))
return lastUrl + "?faces-redirect=true";
else
return "/news?faces-redirect=true";
} else {
return currentUrl + "?faces-redirect=true";
}
public String signInUser() {
if (trySignIn()) {
if (null != lastUrl && !"/signin".equals(lastUrl))
return lastUrl + "?faces-redirect=true";
else
return "/news?faces-redirect=true";
} else {
return "signin.xhtml?faces-redirect=true";
}
}
public void signInFromDlg() {
trySignIn();
}