RavenDb 授权包。为什么角色和用户存储在系统文档中?

RavenDb Auth Bundle. Why Roles & Users a stored in System Documents?

RavenDb官方文档对于是否在System Documents[=32]中存储UsersRoles不一致=] 或 一般文件

虽然不推荐使用某种方式,但一篇文章(参见KB : Bundles : Authorization Bundle Design) implicitly stores users in the System Documents by starting the document ids with raven/, when another (see Bundle: Authorization)使用了通用文档(因为没有raven/前缀文档 ID)。

问题:用户角色存储在系统文件?

权限检查(IsAllowed() 方法)似乎与存储无关。但是,无法查询存储在 System Documents 中的文档(只能通过 ID 加载)是一个严重的缺点。

亚历克斯, 以 Raven/ 开头的文档称为系统文档,通常由 RavenDB 本身使用。换句话说,它们通常具有有意义的文档 ID。

例如,

Raven/ApiKeys/Foo 是将被搜索以验证 foo Api 密钥的文档。

另一方面,IsAllowed 方法和朋友可以接受任何文档 ID,因此不必提前知道。

这是造成差异的主要原因。 请注意,不会复制系统文档,而会复制其他文档。通过使您的授权规则成为系统文档,您可以防止它们被复制。

这可能是您想要或不想做的事情,具体取决于您的需要。