【发布时间】:2015-02-12 10:55:48
【问题描述】:
在我的 XPages 应用程序中,网络用户可以执行自行注册。在注册过程中,会在地址簿中为网络用户创建一个用户文档,并将用户添加到对数据库具有编辑者访问权限的组中。在 Domino 服务器上执行show nlcache reset 后,用户可以登录并访问应用程序。
在大约 98% 的注册中,这非常好。但是,有时新用户在登录后无法进入应用程序,因为根据 Domino 服务器,他们“无权访问”数据库。登录必须有效,因为用户 ID 是正确的。完全相同的用户 ID 也可以在对数据库具有编辑权限的组的成员字段中找到。为了额外验证用户的访问级别,我使用用户 ID 执行了NotesDatabase.queryAccess()。它返回 0,这是 ACL 默认值,意思是“No Access”。然而,同一个ACL组中有几十个用户访问数据库完全没有问题。
目前,我们通过手动从通讯录中删除用户的文档以及将他/她从 ACL 组的成员中删除来“规避”这个问题。之后,我们要求用户使用与以前完全相同的信息重新进行自我注册。到目前为止,第二次注册一直有效,用户可以访问该应用程序。然而,这不是一个真正的解决方案,这就是为什么我不得不问是否有人知道可能是什么问题?
【问题讨论】:
-
检查自注册用户的名字中是否有两个连续的空格,(可能是因为尾随空格也是)在组 domino 中执行 FullTrim。所以我们有 John
Smith 不在组 XXX 中,因为在成员中是 John Smith。 -
@EmmanuelGleizer:用户名看起来很正常:没有前导或尾随空格,没有双空格。此外,到目前为止,使用完全相同的凭据进行的第二次注册一直有效。你有过类似的问题吗?
-
您在代码中使用 sessionAsSigner 吗?
-
@ThomasAdrian:是的,我使用 sessionAsSignerWithFullAccess 能够在通讯簿中创建用户文档。您认为这会导致问题吗?
-
听起来很熟悉:www-10.lotus.com/ldd/nd8forum.nsf/… 它链接到 Bruce Elgort 的博客,指出如果您设置 notes.ini 参数“NLCACHE_VERSION=4”,则无需“显示 nlcache 重置” - 这是自 8.5 以来的默认设置。 x (www-01.ibm.com/support/docview.wss?uid=swg21406274)。那么有访问问题的用户有什么特别之处吗?
标签: xpages lotus-notes acl lotus-domino