Xpages 强制用户登录特定XPage:Is<;xp:acentry>;标签薄片?

Xpages 强制用户登录特定XPage:Is<;xp:acentry>;标签薄片?,xpages,Xpages,我有一个“注册”XPage,我希望最终用户登录该页面。普通用户可以浏览数据库,但当他们需要注册时,我希望他们注册 我一直在使用xp:aclEntry标签来控制它 <xp:this.acl> <xp:acl> <xp:this.entries> <xp:aclEntry type="ROLE" loaded="true"

我有一个“注册”XPage,我希望最终用户登录该页面。普通用户可以浏览数据库,但当他们需要注册时,我希望他们注册

我一直在使用xp:aclEntry标签来控制它

<xp:this.acl>
    <xp:acl>
        <xp:this.entries>
            <xp:aclEntry
                type="ROLE"
                loaded="true"
                right="EDITOR">
                <xp:this.name><![CDATA[[CreateAnmeldung]]]></xp:this.name>
            </xp:aclEntry>
        </xp:this.entries>
    </xp:acl>
</xp:this.acl>

但现在我明白了

尽管我认为用户有这样的角色:

Oliver Busse在我前面的一个问题中建议避免使用acentry标记,而是在beforePageLoad事件中执行一些代码。这是正确的最佳实践吗

或者,我错过了什么吗?

安德鲁

最佳实践总是有待讨论,但我同意Oliver的观点,即您应该在页面加载之前签入
,并以这种方式重定向。我自己从来没有用过
,所以我不能直接告诉你它是不是片状的

在本例中,我检查匿名,但听起来您的检查会有所不同。如果以这种方式使用,则必须允许XPage上的公共访问。(我之所以添加此项,是因为它经常被忽略)


此外,请参阅Oliver关于确定访问级别的更好方法的回答:


我还没有使用过这个,使用上面的代码也没有问题,但我记得最近出现了这个编辑:刚刚看到这是你的问题,可以肯定地说你知道:),但是留给后代。

我有点不清楚。当用户试图访问注册页面时,您是否有代码重定向到自定义登录页面?我的意思是:if(context.getUser().getCommonName()=“匿名”){sessionScope.put(“entryPage”,context.getUrl().getPath()+context.getUrl().getQueryString())context.RedirectPage(“~~~~~~/login.xsp”);}除非你不查匿名者,你查的是别的东西。就像奥利弗建议的那样,我想我现在明白了。是的,我也同意奥利弗的观点。威尔会给出答案……哈哈,是的,这也是我的问题。我现在有很多问题要问。接下来的问题是:你会推荐什么作为login.xsp?这里似乎还有很多不同的方法——openntf中有三到四种。你知道我可以复制一个方便的吗?我们的是一个openNTF项目的衍生产品…将尝试找出哪一个并编辑我的答案。我抄袭了另一个内部项目,在我加入这家公司之前就已经存在了。另外,你是在硬编码nsf的名字吗?我不应该使用context.getUrl().getPath()之类的东西吗?如果我没记错的话,我在使用它时遇到了问题。它并不总是始终如一地起作用。
//Check Access level, if Anonymous, redirect them to login page.
if (context.getUser().getCommonName() == "Anonymous"){
    context.redirectToPage("/~~~/~~~.nsf/login.xsp");
}