Xpages 尽管在ACL中具有编辑器访问权限,但Web用户无权访问数据库

Xpages 尽管在ACL中具有编辑器访问权限,但Web用户无权访问数据库,xpages,lotus-notes,acl,lotus-domino,Xpages,Lotus Notes,Acl,Lotus Domino,在我的XPages应用程序中,web用户可以执行自注册。在注册过程中,将在通讯簿中创建web用户的用户文档,并将用户添加到对数据库具有编辑器访问权限的组中。在Domino服务器上执行show nlcache reset后,用户可以登录并访问应用程序 在大约98%的注册中,这种方法非常有效。但是,有时新用户在登录后无法进入应用程序,因为根据Domino服务器,他们“无权访问”数据库。由于用户id正确,登录必须正常工作。在具有数据库编辑器访问权限的组的“成员”字段中也可以找到完全相同的用户id。为了

在我的XPages应用程序中,web用户可以执行自注册。在注册过程中,将在通讯簿中创建web用户的用户文档,并将用户添加到对数据库具有编辑器访问权限的组中。在Domino服务器上执行
show nlcache reset
后,用户可以登录并访问应用程序

在大约98%的注册中,这种方法非常有效。但是,有时新用户在登录后无法进入应用程序,因为根据Domino服务器,他们“无权访问”数据库。由于用户id正确,登录必须正常工作。在具有数据库编辑器访问权限的组的“成员”字段中也可以找到完全相同的用户id。为了进一步验证用户的访问级别,我使用用户id执行了
NotesDatabase.queryAccess()
。它返回0,这是ACL默认值,表示“无访问权”。但是,同一ACL组中有几十个用户在访问数据库时绝对没有问题


目前,我们通过手动从通讯簿中删除用户的文档以及从ACL组的成员中删除他/她来“规避”这个问题。之后,我们要求用户使用与之前完全相同的信息重新进行自注册。到目前为止,第二次注册一直有效,用户可以访问应用程序。然而,这并不是一个真正的解决方案,这就是为什么我必须问是否有人知道问题出在哪里?

不要直接在通讯簿中创建条目。使用adminp过程进行注册。为了最大限度地减少感知延迟,用户必须单击发送验证/确认消息

不要直接在通讯簿中创建条目。使用adminp过程进行注册。为了最大限度地减少感知延迟,用户必须单击发送验证/确认消息

这可能与names.nsf中视图索引的刷新频率有关

由于访问控制是在ACL中的组中完成的,因此只有在更新视图索引后,服务器才会“知道”哪个用户属于哪个组。 在正常设置下,这可能需要几分钟

您可以通过强制索引刷新来检验这一假设,方法是从Notes客户端使用CTRL-MAJ-F9(警告,可能需要很长时间,具体取决于网络和names.nsf中的条目数)或使用命令

load updall -v names.nsf

。。。或者让用户稍等片刻,5分钟后再试。

这可能与在names.nsf中刷新视图索引的频率有关

由于访问控制是在ACL中的组中完成的,因此只有在更新视图索引后,服务器才会“知道”哪个用户属于哪个组。 在正常设置下,这可能需要几分钟

您可以通过强制索引刷新来检验这一假设,方法是从Notes客户端使用CTRL-MAJ-F9(警告,可能需要很长时间,具体取决于网络和names.nsf中的条目数)或使用命令

load updall -v names.nsf

。。。或者让用户稍等片刻,5分钟后再试。

好的,首先是一个问题。如果让用户等待几分钟,访问是否有效?即,是刷新/缓存问题,还是将用户添加到组的方式不一致

我假设用户名的格式是正确的,因为它在大多数情况下都有效(即完全分层的名称)。。。这些名字有什么“特别”的地方不起作用吗

我做了一件类似的事情(并且做了好几次)——尽管有一些不同之处:-)

我通常使用目录帮助将数据库包含在“($Users)”视图中。当我更新此视图中的任何内容时,我会对视图执行view.refresh()(使用Java)。我通常不在这些类型的应用程序中使用组(或者不适用,或者我为特定用户使用OU或角色)。我不确定团队成员是如何计算的——但我想你可以试着找到相关的视图(尽管在我查看时它们似乎都不明显)——并对其进行刷新


/约翰

好的,首先问一个问题。如果让用户等待几分钟,访问是否有效?即,是刷新/缓存问题,还是将用户添加到组的方式不一致

我假设用户名的格式是正确的,因为它在大多数情况下都有效(即完全分层的名称)。。。这些名字有什么“特别”的地方不起作用吗

我做了一件类似的事情(并且做了好几次)——尽管有一些不同之处:-)

我通常使用目录帮助将数据库包含在“($Users)”视图中。当我更新此视图中的任何内容时,我会对视图执行view.refresh()(使用Java)。我通常不在这些类型的应用程序中使用组(或者不适用,或者我为特定用户使用OU或角色)。我不确定团队成员是如何计算的——但我想你可以试着找到相关的视图(尽管在我查看时它们似乎都不明显)——并对其进行刷新


/约翰在2015年2月12日的评论似乎是正确的答案:

检查自注册用户的姓名中是否有两个连续空格(可能是因为也有空格)

在多米诺骨牌小组里,做一次完整的修剪。所以我们有

John<space><space>Smith
JohnSmith
这不在XXX组中,因为在成员中:

John<space>Smith.
约翰史密斯。
2015年2月12日的评论似乎是正确的答案:

检查自注册用户的姓名中是否有两个连续空格(可能是因为也有空格)

在多米诺骨牌小组里,做一次完整的修剪。所以我们有

John<space><space>Smith
JohnSmith
这不在XXX组中,因为在成员中:

John<space>Smith.
约翰史密斯。 检查自助注册表