gpt4 book ai didi

java - xPage NotesContext getDatabase ACL 问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:55:15 25 4
gpt4 key购买 nike

Domino 版本:9.0.1

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

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

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

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

托管 bean session 范围

我的代码片段

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

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

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

如有任何建议,我们将不胜感激。

最佳答案

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

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

关于java - xPage NotesContext getDatabase ACL 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23291931/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com