我有一个应用程序,除了一对之外,所有xpages都可以匿名访问。我需要强制用户登录这些xpages。是使用beforepageload事件检查并以正确的方式将用户重定向到登录页面还是有更好的方法?
答案 0 :(得分:10)
最好的解决方案是在需要用户登录的XPage中添加ACL,然后您不依赖于自己的代码,而是让服务器为您完成工作。
要添加ACL,请转到XPage的“所有属性”,然后查找“访问控制”部分。然后,您可以添加一个或多个配置来定义谁具有哪些访问权限 - 例如匿名无法访问,或者组或角色中的人员有权访问等。
马特
答案 1 :(得分:8)
是的,这是一种有效的方法,也是我在几个应用程序中处理这种情况的方法。
这是我使用的代码
if (context.getUser().getCommonName() == "Anonymous"){
sessionScope.put("entryPage",context.getUrl().getPath() + context.getUrl().getQueryString())
context.redirectToPage("/login.xsp");
}
我将此设置作为一个函数,我只是从beforePageLoad事件调用。我正在重定向到另一个XPage,但您也可以重定向到database.nsf?login,它将使用服务器上的身份验证类型设置。
答案 2 :(得分:4)
我完全支持以下提供的答案: Matt White
最好的解决方案是在XPage中添加ACL
在我的XPage App中,我使用以下代码:
<?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>
它表现得非常完美!试试吧! )
答案 3 :(得分:1)
您可以使用以下样本进行解决。
1- OpenNTF - Xpages Dojo Login Custom Control Project
2- LotusNotus.Com from Serdar Basegmez - Authenticating Notes users for Web apps automatically...
答案 4 :(得分:0)
你也可以看一下:
http://www.ovalbusinesssolutions.co.uk/thoughts/securing-your-xpages-website-using-public-access-2
如果取消选中要向其强制登录的XPage的“可供公共访问用户使用”(默认情况下未选中),则用户将自动路由到登录,并在成功登录后,回到XPage他试图打开。