如何检查某个用户是否具有 reader- 访问文档的权限
How to check if a certain user has reader-access to a document
对于具有 java bean 的 xpage 应用程序,我需要检查某个用户(不是当前用户)是否具有对文档的 reader 访问权限。以上所有访问级别(数据库 ACL、XPage ACL...)都可以认为是理所当然的。当前用户始终至少是作者。
每个文档有一个reader字段"readers"和三个作者字段"creator"、"authors"、"AdminAuthor",最后一个可以忽略,因为它总是只每个文档都包含“[Admin]”
当前的想法是像此处显示的那样获取用户组 (Determine all groups for a defined user),遍历它们并与 reader 和作者字段字段内容
进行比较
为什么我不喜欢它:
- 使用未记录的 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$”列的特殊视图中,...)
A "documented" 做你想做的事情的方法是将用户添加到 reader 字段,如果他的名字不在列表中。无需检查用户是否有访问权限。
我仍然想知道您的场景,因为我不明白您想要实现什么:您正在检查用户是否在允许他访问文档的特定组中。如果用户属于这些组之一,则跳过他的名字。
同时,该用户已从组中删除,并且无法再访问该文档...
为什么不使用组或角色?没有编码,只有管理。你在解决组织问题吗?
对于具有 java bean 的 xpage 应用程序,我需要检查某个用户(不是当前用户)是否具有对文档的 reader 访问权限。以上所有访问级别(数据库 ACL、XPage ACL...)都可以认为是理所当然的。当前用户始终至少是作者。
每个文档有一个reader字段"readers"和三个作者字段"creator"、"authors"、"AdminAuthor",最后一个可以忽略,因为它总是只每个文档都包含“[Admin]”
当前的想法是像此处显示的那样获取用户组 (Determine all groups for a defined user),遍历它们并与 reader 和作者字段字段内容
进行比较为什么我不喜欢它:
- 使用未记录的 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$”列的特殊视图中,...)
A "documented" 做你想做的事情的方法是将用户添加到 reader 字段,如果他的名字不在列表中。无需检查用户是否有访问权限。
我仍然想知道您的场景,因为我不明白您想要实现什么:您正在检查用户是否在允许他访问文档的特定组中。如果用户属于这些组之一,则跳过他的名字。 同时,该用户已从组中删除,并且无法再访问该文档...
为什么不使用组或角色?没有编码,只有管理。你在解决组织问题吗?