在开发xPages应用程序时,从传统Notes客户端保护nsf的最佳做法是什么。我想通过Notes客户端阻止对数据库的任何访问,同时对xPage没有影响。
我想出于多种原因限制访问。对文档和视图的安全性,防止用户在注释中使用应用程序并强制他们使用xPages。看起来没有银弹来实现这一点,而是我需要使用许多不同的解决方案。
答案 0 :(得分:2)
为什么要阻止访问?
我假设管理员和服务器应该能够访问nsf。所以LocalDomainAdmins,LocalDomainServers等应该是ACL的一部分。
您可以通过确保ACL中的用户访问组包含没有匹配的Notes名称的用户帐户(names.nsf中的个人文档)的名称来限制用户从Notes客户端访问nsf本身(Notes id) 。然后,用户只能从Web访问应用程序,而不能从Notes访问。
但如果用户已经拥有Notes访问权限,那么这可能不是一个可行的解决方案。因为那时您必须使用与现有人员文档不匹配的用户名创建新的个人文档,这意味着现有用户可以拥有用于Notes访问的个人文档和用于Web访问的个人文档。
相反,您应该考虑限制对文档的访问(使用“读者”字段)和视图(通过限制对某个角色的访问)。
答案 1 :(得分:2)
您无法通过ACL阻止它。您可以重定向普通用户以在浏览器中打开您的应用程序。在我们的应用程序中,为了防止在客户端和XPiNC中打开它们,我使用queryOpen脚本创建了简单的子表单:
Dim ws as New NotesUIWorkspace
ws.URLOpen Source.Document.HttpUrl
Continue = False
此子表单放在用户可以从视图获取文档链接或从视图打开的表单中。在视图级别,您可以对所有可见视图和/或OpenDatabase脚本采用类似的方法。
这适用于此调整:native Domino links and XPages
答案 2 :(得分:2)
我会考虑更简单一点,只需更改客户端的启动属性,重定向到指示用户应通过浏览器访问应用程序的页面,并提供访问系统的URL。这不是一个完美的解决方案,取决于在这个系统中如何传播信息,但如果用户只是通过Notes客户端打开应用程序,这将提供良好的重定向,并重新培训最终用户应用程序的意图在将来使用。
答案 3 :(得分:2)
将应用分成两个.nsfs。一个用于仅用于xpage设计的数据。锁定数据.nsf并将其限制为仅允许设计签名者访问。这会引起一些麻烦,因为您需要使用sessionAsSigner来提取数据。
答案 4 :(得分:1)
在数据库中创建一个名为“Admin”的新角色
如果用户没有管理员角色,请将代码放入数据库脚本中,打开将使用uidatabase.close的事件
将脚本放在alla视图中,对于没有admin角色的所有用户,使用continue = false查询“query open”事件。 (这将阻止用户使用转到查看菜单操作从工作区打开视图)
仅将acl中的“Admin”角色分配给应该能够从Notes客户端访问它的人
除了“管理员”角色之外,您还可以“隐藏”Notes中的所有视图,但这可能会导致其他问题,具体取决于应用程序的设计方式。
答案 5 :(得分:1)
通过从表单中删除字段或隐藏所有字段,您可以尝试访问Notes中的数据不合适。然后,您可以隐藏Notes客户端中的视图,并使访问文档更加困难(尽管有人仍然可以创建私有视图)。
在我们的一个数据库中,数据库在XPiNC中打开XPage,它只显示管理员打开视图的链接。
var server:NotesName = session.createName(@Subset ( @DbName(), 1));
var filepath = database.getFilePath();
return "Notes://" + server.getCommon() + "/" + filepath + "/ViewToOpen?OpenView";
虽然它不会阻止最终用户在任何情况下访问Notes客户端版本(某人仍然可以发送文档链接或查看链接),但它允许用户遵循他们的正常双击模式并以这种方式打开数据库我希望他们看到它。通过链接,我可以允许那些真正需要Notes客户端访问它的人。