4

我正在尝试使用 RavenDB 的授权包通过在 WorkItem 文档上明确设置的权限来限制查询的结果(在 WorkItems 上)。

例如:

我有一个用户 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

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

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

允许是真的。

还有一点需要注意的是,我试图忽略或根本不使用授权包的角色概念,我想知道这是否会产生一些意想不到的影响。

我很可能误解了他们的例子,有人可以为我解释这个问题吗?提前致谢。

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

4

1 回答 1

1

只是为了整理这个问题,我将回答导致我的问题的原因。该问题与使用“raven/authorization/users/1”语法有关。当我将搜索命令更改为简单地使用时,“users/1”它工作正常。

于 2014-04-30T15:28:05.473 回答