Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java xPage NotesContext getDatabase ACL问题_Java_Session_Xpages_Lotus Domino_Managed Bean - Fatal编程技术网

Java xPage NotesContext getDatabase ACL问题

Java xPage NotesContext getDatabase ACL问题,java,session,xpages,lotus-domino,managed-bean,Java,Session,Xpages,Lotus Domino,Managed Bean,Domino版本:9.0.1 用例 我有一个主数据库(DB0.nsf),用户有读卡器访问权限,而当前登录的用户有不同访问级别的N个数据库(例如DB1-默认用户是读卡器;DB2-用户无访问权限,DB3-用户组是作者) 用户从主数据库打开xpage。XPage包含一个视图面板,该面板应显示当前登录的用户具有最低读卡器访问权限的数据库列表 此视图的行为很奇怪,即有时它按预期工作,并显示用户具有最低读卡器访问权限的所有数据库,有时它不显示所有数据库。(在我的示例中,用户应该看到DB1和DB3,但有时他只

Domino版本:9.0.1

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

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

此视图的行为很奇怪,即有时它按预期工作,并显示用户具有最低读卡器访问权限的所有数据库,有时它不显示所有数据库。(在我的示例中,用户应该看到DB1和DB3,但有时他只看到一个DB3,他看不到ACL中默认访问设置为Reader的数据库)

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

托管bean会话范围

我的代码片段

String path=path.get(0).替换(“\\”,“\\\”);
字符串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


任何建议都将不胜感激。

正如我在上一篇评论中所写的那样,我只能猜测默认设置有时不起作用的原因。作为一种解决方法,您可以使用全局组(我个人的首选项)或占位符条目,如“*/yourDomain”


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

如果您使用全局组(如“allUsers”)或所有域成员(如在*/yourDomain中,如果您的用户注册为CN=user name/O=yourDomain),会发生什么情况而不是引用默认值?很可能它应该按照您的方式工作,但在Domino开发的所有年份中,我都习惯于将默认值设置为无访问,而是使用特定的组…当我使用全局组时,它工作得很好。但我不明白为什么它不使用默认值?我也是。但是既然您编写了t有时起作用,但有时不起作用。我可以想象这可能是某种缓存问题。可能这里的默认值只是toongeneric…我会将我的建议作为答案发布,以便您可以接受。该bean属于什么范围?抱歉,该bean属于请求范围