我有一个应用程序可以匿名访问除几个之外的所有 xpage。我需要强制用户登录这些 xpage。是使用 beforepageload 事件检查并将用户重定向到正确的登录页面还是有更好的方法?
5 回答
最好的解决方案是向需要用户登录的 XPage 添加 ACL,这样您就不必依赖自己的代码,而是可以让服务器为您完成工作。
要添加 ACL,请转到 XPage 的所有属性并查找访问控制部分。然后,您可以添加一个或多个配置来定义谁拥有什么访问权限 - 例如,匿名者没有访问权限,或者组或角色中的人拥有访问权限等。
马特
是的,这将是一种有效的方法,也是我在自己的几个应用程序中处理这种情况的方式。
这是我使用的代码
if (context.getUser().getCommonName() == "Anonymous"){
sessionScope.put("entryPage",context.getUrl().getPath() + context.getUrl().getQueryString())
context.redirectToPage("/login.xsp");
}
我将此设置作为我刚刚从 beforePageLoad 事件中调用的函数。我正在重定向到另一个 XPage,但您也可以重定向到 database.nsf?login,它将使用服务器上的身份验证类型设置。
我完全支持以下提供的答案:Matt White
最好的解决方案是将 ACL 添加到 XPage
在我的 XPages 应用程序中,我使用以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
<xp:this.acl>
<xp:acl>
<xp:this.entries>
<xp:aclEntry type="ANONYMOUS" right="READER"></xp:aclEntry>
<xp:aclEntry type="DEFAULT" right="EDITOR"></xp:aclEntry>
</xp:this.entries>
</xp:acl>
</xp:this.acl>
...XPage content here...
</xp:view>
它表现得非常完美!尝试一下!)
您可以使用以下示例进行解决。
1- OpenNTF - Xpages Dojo 登录自定义控件项目
2- 来自 Serdar Basegmez 的 LotusNotus.Com - 自动为 Web 应用程序验证 Notes 用户...
你也可以看看这里:
http://www.ovalbusinesssolutions.co.uk/thoughts/securing-your-xpages-website-using-public-access-2
如果您取消选中要强制登录的 XPage 的“对公共访问用户可用”框(默认情况下未选中),用户将被自动路由到登录,并在成功登录后返回到XPage 他试图打开。