RavenDb 授权包。为什么角色和用户存储在系统文档中?
RavenDb Auth Bundle. Why Roles & Users a stored in System Documents?
RavenDb官方文档对于是否在System Documents[=32]中存储Users和Roles不一致=] 或 一般文件 。
虽然不推荐使用某种方式,但一篇文章(参见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,因此不必提前知道。
这是造成差异的主要原因。
请注意,不会复制系统文档,而会复制其他文档。通过使您的授权规则成为系统文档,您可以防止它们被复制。
这可能是您想要或不想做的事情,具体取决于您的需要。
RavenDb官方文档对于是否在System Documents[=32]中存储Users和Roles不一致=] 或 一般文件 。
虽然不推荐使用某种方式,但一篇文章(参见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,因此不必提前知道。
这是造成差异的主要原因。 请注意,不会复制系统文档,而会复制其他文档。通过使您的授权规则成为系统文档,您可以防止它们被复制。
这可能是您想要或不想做的事情,具体取决于您的需要。