我有一个函数,我想检查用户是否可以设置文档锁定。如果是这样,我知道用户可以编辑文档。
public boolean canWriteDocument(String docId, String userName) {
boolean canWrite = false;
Session session = null;
session = getCurrentSession();
try {
Database db = session.getDatabase("", this.activeDb);
if (db.isDocumentLockingEnabled()) {
//Document locking is enabled
Document doc = db.getDocumentByUNID(docId);
if (doc.lock(userName)) {
canWrite = true;
System.out.println("document can be locked by user");
doc.unlock();
} else {
System.out.println("document can NOT be locked by user");
}
} else {
//Document locking is NOT enabled
}
} catch (NotesException e) {
// fail silently
System.out.println("failure docLock");
//e.printStackTrace();
}
return canWrite;
}
我按照以下方式调用该函数: canWriteDocument(" 99DE330A432849AFC125803400313C73"," CN = John Doe / O = quintessens")
但是必定有错误,因为当用户(具有ACL作者访问级别)未在类型作者的字段中列出时,它返回true。
当我将ACL访问级别降低到Reader时,返回的值仍然为true。
任何人都可以解释为什么会发生这种情况?
答案 0 :(得分:0)
可能是数据库访问级别在服务器中缓存。尝试重新启动服务器(如果它是开发环境)或使用之前从未在ACL中的全新用户进行测试。
如果Database.queryAccess()
也不正确,那将确认缓存是个问题。
(检查访问权限的两种方式可能会在不同的情况下工作,因此如果queryAccess()
返回正确的值,则可能并不明确表示数据库锁定选项应该。)