我正在尝试使用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,但他们的问题似乎与计数有关,而不一定是实际结果。
答案 0 :(得分:1)
为了解决这个问题,我将回答造成问题的原因。这个问题与使用&#34; raven / authorization / users / 1&#34;句法。当我将搜索命令改为简单使用时,&#34; users / 1&#34;它运作正常。