繁体   English   中英

如何检查某个用户是否具有读者对文档的访问权限

[英]How to check if a certain user has reader-access to a document

对于使用Java Bean的xpage应用程序,我需要检查某个用户(不是当前用户)是否具有读者对文档的访问权限。 上面的所有访问级别(数据库ACL,XPage ACL ...)都可以视为理所当然。 当前用户始终至少是作者。

每个文档都有一个读者字段“ readers”和三个authorfields“ creator”,“ authors”,“ AdminAuthor”,由于每个文档始终只包含“ [Admin]”,因此最后一个可以忽略

当前的想法是获得此处显示的用户组( 确定已定义用户的所有组 ),循环遍历并与“读者”和“作者”字段进行比较

为什么我不喜欢它:

  • 使用未记录的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;
}

谢谢你的帮助

有多种检查用户是否有权访问文档的方法,但是所有这些方法都没有文档记录(但十年以来仍然可用),因此它们不符合您的要求(即在不同的用户上下文或特殊视图中运行)带有“ $ C1 $”列,...)

如果您的名字不在列表中,则将其添加到阅读器字段中是一种“已记录”的操作方式,它只是将用户添加到阅读器字段中。 无需检查用户是否具有访问权限。

我仍然想知道您的情况,因为我不明白您要实现的目的:您正在检查用户是否在特定的组中,该组可以授予他对文档的访问权限。 如果用户属于这些组之一,则跳过其名称。 同时,该用户已从该组中删除,并且无法再访问该文档...

为什么不使用组或角色? 没有编码,只有管理。 您是否正在解决组织问题?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM