在开发xPages应用程序时,防止通过notes客户端访问nsf的最佳方法是什么

在开发xPages应用程序时,防止通过notes客户端访问nsf的最佳方法是什么,xpages,lotus-notes,lotus-domino,Xpages,Lotus Notes,Lotus Domino,在开发xPages应用程序时,从传统Notes客户端保护nsf的最佳实践是什么。我希望在不影响xPage的情况下,阻止通过Notes客户端访问数据库 我想出于一些原因限制访问。文档和视图的安全性,防止用户在notes中使用应用程序并强制他们使用xPages。看起来没有解决这个问题的灵丹妙药,但我需要使用许多不同的解决方案。为什么要阻止访问 我假设管理员和服务器应该能够访问nsf。所以LocalDomainAdmins、LocalDomainServers等应该是ACL的一部分 通过确保ACL中的

在开发xPages应用程序时,从传统Notes客户端保护nsf的最佳实践是什么。我希望在不影响xPage的情况下,阻止通过Notes客户端访问数据库


我想出于一些原因限制访问。文档和视图的安全性,防止用户在notes中使用应用程序并强制他们使用xPages。看起来没有解决这个问题的灵丹妙药,但我需要使用许多不同的解决方案。

为什么要阻止访问

我假设管理员和服务器应该能够访问nsf。所以LocalDomainAdmins、LocalDomainServers等应该是ACL的一部分

通过确保ACL中的用户访问组包含没有匹配Notes名称(Notes id)的用户帐户(names.nsf中的个人文档)的名称,可以限制用户从Notes客户端对nsf本身的访问。然后,用户只能从web而不是Notes访问应用程序

但如果用户已经拥有Notes访问权限,这可能不是一个可行的解决方案。因为您必须创建新的person文档,其用户名与现有person文档不匹配,这意味着现有用户将有一个用于Notes访问的person文档和一个用于web访问的person文档


相反,您可能应该考虑限制对文档(使用读卡器字段)和视图的访问(通过限制对特定角色的访问)。

为什么要阻止访问

我假设管理员和服务器应该能够访问nsf。所以LocalDomainAdmins、LocalDomainServers等应该是ACL的一部分

通过确保ACL中的用户访问组包含没有匹配Notes名称(Notes id)的用户帐户(names.nsf中的个人文档)的名称,可以限制用户从Notes客户端对nsf本身的访问。然后,用户只能从web而不是Notes访问应用程序

但如果用户已经拥有Notes访问权限,这可能不是一个可行的解决方案。因为您必须创建新的person文档,其用户名与现有person文档不匹配,这意味着现有用户将有一个用于Notes访问的person文档和一个用于web访问的person文档


相反,您可能应该考虑限制对文档(使用读卡器字段)和视图的访问(通过限制对特定角色的访问)。

您不能通过ACL阻止它。您可以重定向普通用户以在浏览器中打开应用程序,tho。在我们的应用程序中,为了防止在客户端和XPiNC中打开它们,我使用queryOpen脚本制作了简单的子窗体:

Dim ws as New NotesUIWorkspace
ws.URLOpen Source.Document.HttpUrl
Continue = False
此子表单放在表单中,用户可以从视图中获取或打开文档链接。在视图级别,您可以对所有可见视图和/或OpenDatabase脚本采用类似的方法


这与此调整配合得很好:

您不能通过ACL阻止它。您可以重定向普通用户以在浏览器中打开应用程序,tho。在我们的应用程序中,为了防止在客户端和XPiNC中打开它们,我使用queryOpen脚本制作了简单的子窗体:

Dim ws as New NotesUIWorkspace
ws.URLOpen Source.Document.HttpUrl
Continue = False
此子表单放在表单中,用户可以从视图中获取或打开文档链接。在视图级别,您可以对所有可见视图和/或OpenDatabase脚本采用类似的方法


<>这一点很好地处理了:

我会考虑在这个方面做得更简单,简单地改变客户端的启动属性,重定向到一个页面,指示用户应该通过浏览器访问应用程序,并提供访问系统的URL。这不是一个完美的解决方案,取决于信息在系统中的传播方式,但是如果用户只是通过Notes客户机打开应用程序,这将提供一个很好的重定向,并重新训练终端用户如何在将来使用该应用程序。

< P>我会考虑在这方面做得更简单,并且简单地改变客户端的启动属性以重定向到指示用户的页面。应通过浏览器访问应用程序,并提供访问系统的URL。这不是一个完美的解决方案,这取决于信息在该系统中的传播方式,但如果用户只是通过notes客户端打开应用程序,这将提供一个良好的重定向,并重新培训最终用户将来如何使用该应用程序

  • 在数据库中创建名为“Admin”的新角色

  • 将代码放入数据库脚本post open事件中,该事件将使用uidatabase.close(如果用户没有管理员角色)

  • 对于没有管理员角色的所有用户,在alla视图“查询打开”事件中使用continue=false放置脚本。(这将阻止用户使用“转到视图”菜单操作从工作区打开视图)

  • 仅将acl中的“Admin”角色分配给应该能够从Notes客户端访问它的人员

  • 除“管理员”角色外,您还可以从Notes中“隐藏”所有人的所有视图,但这可能会导致其他问题,具体取决于应用程序的设计方式

  • 在数据库中创建名为“Admin”的新角色

  • 将代码放入数据库脚本post open事件中,该事件将使用uidatabase.close(如果用户没有管理员角色)

  • 对于没有管理员角色的所有用户,在alla视图“查询打开”事件中使用continue=false放置脚本。(这将阻止用户使用“转到视图”菜单操作从工作区打开视图)

  • 仅将acl中的“Admin”角色分配给应该能够从Notes客户端访问它的人员

  • 除“管理员”角色外,您还可以从Notes中“隐藏”除“管理员”角色以外的所有人的所有视图,但这可能会导致其他问题,具体取决于应用程序的设计方式。