xpages 应用程序布局登录节点:登录后如何保持在同一页面上?
xpages application layout login node: way to stay on the same page once logged in?
我有一个使用应用程序布局的应用程序。登录节点已添加到实用程序链接中的应用程序布局 (xe:loginTreeNode)。
控件可以工作,但是当用户登录时,他被重定向到应用程序的主页。有没有办法登录并停留在当前页面?
我能想到的唯一方法是使用 cookie 来记住他们在按下登录按钮之前所在的页面。您不能使用任何作用域变量或托管 bean,因为它们会在您注销时丢失。
然后在您的登录页面中,检查 cookie 的值并重定向到该页面,否则如果 cookie 为空,则将他们带到主页。您可以使用客户端 JS 编写和读取 cookie。
由于您没有使用自定义登录表单,另一个想法是改用基本节点。基本节点有一个客户端 onClick 事件。在这里你可以放类似这样的代码:
var currentPage = [code to obtain the current page];
location.href="/yourFolder/yourDatabase.nsf?logout&redirectTo=/yourFolder/yourDatabase.nsf/currentPage";
我不太相信这会奏效,但值得一试。
实施xe:loginTreeNode
:
@Override
public String getHref() {
String href = super.getHref();
if(StringUtil.isNotEmpty(href)) {
return href;
}
boolean logged = isLoggedIn();
String command = "";
FacesContext ctx = FacesContext.getCurrentInstance();
if(logged && StringUtil.equals(ctx.getExternalContext().getAuthType(), "Domino")) //$NON-NLS-1$
{
command = "?logout"; // $NON-NLS-1$
}
else
{
command = /*logged ? "/?logout" :*/ "/?opendatabase&login"; // $NON-NLS-1$
}
href = ctx.getExternalContext().getRequestContextPath() + command;
return href;
}
简单地说:如果您不希望它重定向,只需使用 basicTreeNode,取任何 URL 并在其后附加“?login”。
我有一个使用应用程序布局的应用程序。登录节点已添加到实用程序链接中的应用程序布局 (xe:loginTreeNode)。
控件可以工作,但是当用户登录时,他被重定向到应用程序的主页。有没有办法登录并停留在当前页面?
我能想到的唯一方法是使用 cookie 来记住他们在按下登录按钮之前所在的页面。您不能使用任何作用域变量或托管 bean,因为它们会在您注销时丢失。
然后在您的登录页面中,检查 cookie 的值并重定向到该页面,否则如果 cookie 为空,则将他们带到主页。您可以使用客户端 JS 编写和读取 cookie。
由于您没有使用自定义登录表单,另一个想法是改用基本节点。基本节点有一个客户端 onClick 事件。在这里你可以放类似这样的代码:
var currentPage = [code to obtain the current page];
location.href="/yourFolder/yourDatabase.nsf?logout&redirectTo=/yourFolder/yourDatabase.nsf/currentPage";
我不太相信这会奏效,但值得一试。
实施xe:loginTreeNode
:
@Override
public String getHref() {
String href = super.getHref();
if(StringUtil.isNotEmpty(href)) {
return href;
}
boolean logged = isLoggedIn();
String command = "";
FacesContext ctx = FacesContext.getCurrentInstance();
if(logged && StringUtil.equals(ctx.getExternalContext().getAuthType(), "Domino")) //$NON-NLS-1$
{
command = "?logout"; // $NON-NLS-1$
}
else
{
command = /*logged ? "/?logout" :*/ "/?opendatabase&login"; // $NON-NLS-1$
}
href = ctx.getExternalContext().getRequestContextPath() + command;
return href;
}
简单地说:如果您不希望它重定向,只需使用 basicTreeNode,取任何 URL 并在其后附加“?login”。