【问题标题】:xPage NotesContext getDatabase ACL issuesxPage NotesContext getDatabase ACL 问题
【发布时间】:2014-06-11 02:20:56
【问题描述】:

Domino 版本:9.0.1

用例
我有一个主数据库(DB0.nsf),用户在其上具有读者访问权限和 N 个数据库,当前登录的用户在其上具有不同的访问级别(例如 DB1 - 默认用户是读者;DB2 - 用户无访问权限,DB3 -用户组是作者)

用户从主数据库打开 xpage。 XPage 包含一个视图面板,该面板应显示当前登录用户具有最低读者访问权限的数据库列表。

这种观点表现得很奇怪,即。有时它会按预期工作,并显示用户具有最低读者访问权限的所有数据库,有时它不会显示所有数据库。(在我的示例中,用户应该看到 DB1 和 DB3,但有时他只看到一个 DB3,他看到了看不到 ACL 中默认访问权限设置为 Reader 的数据库)

xpage
xsp 包含一个视图面板,其中源是对象列表,在托管 Bean 中定义为属性

托管 bean 会话范围

我的代码片段

String path=paths.get(0).replace("\\","\\\\"); String srv=srvss.get(0); dbSearch=NotesContext.getCurrent().getCurrentSession().getDatabase(srv,path,false);

问题
在 db1.nsf.ACL 条目上,默认访问权限设置为 reader。 在同一用户登录的情况下,我对上述代码有不同的结果。 用户只是不断刷新页面,有时会在 getDatabase 行中引发异常。
NotesException:用户用户无法打开数据库 TEST\\test\\db1.nsf 在 lotus.domino.local.Session.NgetDatabase(本机方法) 在 lotus.domino.local.Session.getDatabase(未知来源)

额外调试
我添加了几行用于调试 - 当抛出异常时,我得到与会话签名者相同的数据库,并为该数据库中的每个 ACL 条目打印访问级别。 在我的示例中,我将 DB1.nsf 作为 sessionAsSigner 打开,在控制台中我看到 DB1.nsf 的默认 ACL 级别是 Reader。

任何建议将不胜感激。

【问题讨论】:

  • 如果您使用全局组(如“allUsers”)或所有域成员(如 */yourDomain,如果您的用户注册为 CN=user name/O=yourdomain)而不是引用会发生什么默认?很可能它应该按照您的方式工作,但是在 Domino 开发的所有这些年中,我一直将 DEFAULT 设置为 NO ACCESS 而是使用特定组...
  • 当我使用全局组时,它工作正常。但我不明白为什么它不能与 DEFAULT 一起使用?
  • 我也没有。但是,由于您编写的内容有时有效,但有时却不行,我无法想象这可能是某种缓存问题。也许DEFAULT在这里只是toongeneric ...我会发布我的建议作为答案,以便可以接受它是否适合您。
  • 那个bean是什么范围的?
  • 抱歉 bean 是请求范围

标签: java session xpages lotus-domino managed-bean


【解决方案1】:

正如我在上一条评论中所写,我只能猜测为什么 DEFAULT 有时不起作用。作为一种解决方法,您可以使用全局组(我的个人偏好)或占位符条目,例如“*/yourDomain”

在维护数据库的访问权限时,使用组(与 ACL 角色结合使用)还有很多优点。这就是 Notes 安全性的设计方式

【讨论】:

    猜你喜欢
    • 2013-09-26
    • 1970-01-01
    • 2011-10-19
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多