【发布时间】: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