RavenDB授权捆绑SecureFor的正确用户

时间:2013-09-03 17:21:57

标签: authorization ravendb

我正在尝试使用RavenDB的授权包来限制查询结果(在WorkItems上),这些结果是通过在WorkItem文档上显式设置的权限来限制的。

例如:

我有一个用户bob@bob.com,其userId为/ users / 1,而且一个WorkItem在元数据中设置了以下权限:

"Raven-Document-Authorization": {
    "Tags": [],
    "Permissions": [
      {
        "Operation": "/Operations/WorkItem/Search",
        "User": "users/1",
        "Role": null,
        "Allow": true,
        "Priority": 1
      }
    ]
  }

我希望以下代码将查询(从Bob的角度来看)限制为这一个WorkItem,因为这是他有权使用的所有内容。

using (var session = documentStore.OpenSession())
{
    session.SecureFor("raven/authorization/users/1", "/Operations/WorkItem/Search");

    var workItemsQuery = from wi in session.Query<WorkItem>()
                     select wi;

    var debts = workItemsQuery.ToList();

    // do something with the work items
}

我的代码基于RavenDB文档中的以下示例(上下文和用户部分):http://ravendb.net/docs/2.5/server/extending/bundles/authorization-bundle-design

我得到的是没有明确权限设置的WorkItems。这对我来说非常令人费解,因为如果我运行以下代码:

using (var session = mDocumentStore.OpenSession())
    {
       var answer = session.Advanced.IsOperationAllowedOnDocument(userId, operation, securableId);
       var allowed = answer.IsAllowed;
    }

允许是真的。

另外一个注意事项,我试图忽略或根本不使用授权包的角色概念,我想知道这是否会产生一些意想不到的影响。

我很可能误解了他们的榜样,是否有人可以为我解释这个问题?提前谢谢。

此外,我想知道我遇到的问题是否与此StackOverflow问题有关:RavenDB: Raven Query not returning correct count with document authorization,但他们的问题似乎与计数有关,而不一定是实际结果。

1 个答案:

答案 0 :(得分:1)

为了解决这个问题,我将回答造成问题的原因。这个问题与使用&#34; raven / authorization / users / 1&#34;句法。当我将搜索命令改为简单使用时,&#34; users / 1&#34;它运作正常。