【发布时间】:2019-01-21 12:22:22
【问题描述】:
对于带有 java bean 的 xpage 应用程序,我需要检查某个用户(不是当前用户)是否具有对文档的阅读器访问权限。上述所有访问级别(数据库 ACL、XPage ACL...)都可以被视为理所当然。当前用户始终至少是作者。
每个文档都有一个读者字段“读者”和三个作者字段“创建者”、“作者”、“管理员作者”,最后一个可以忽略,因为它总是只包含每个文档的“[管理员]”
当前的想法是获取此处显示的用户组(Determine all groups for a defined user),遍历它们并与读者和作者字段的字段内容进行比较
为什么我不喜欢它:
- 使用未记录的 API
- 糟糕的表现
有没有更好的方法呢?尤其是考虑到嵌套组,因此 $ServerAccess 视图并不是一个真正的选择。
当前代码:
public boolean isReader(String notesName, String documentID){
try {
Vector<String> readers= getAllReaderFieldsValues(documentID);
if(readers.contains(notesName)){
return true;
}
lotus.notes.addins.DominoServer server = new lotus.notes.addins.DominoServer(DominoUtils.getCurrentSession().getServerName());
for(String group:(Vector<String>)server.getNamesList(notesName)){
if (readers.contains(group)){
return true;
}
}
} catch (NotesException e) {
//ErrorHandling
}
return false;
}
感谢您的帮助
【问题讨论】:
-
这不是可以“计算”的东西。您授予用户个人资料某些权限,并检查他应该拥有哪些选项
-
这是我的问题:我如何检查某个用户是否具有文档的阅读权限?
-
通过编写代码来检查?
-
我不知道这样做的好方法,因此我问了这个问题。如果你知道的话,请分享给我
-
“特定用户”是指当前用户还是其他用户?最佳解决方案在很大程度上取决于上下文,因此提供有关应用程序、访问角色和文档详细信息的更多详细信息会有所帮助。
标签: java xpages javabeans lotus-notes