如何根据权限查询项目?

时间:2012-08-23 22:12:10

标签: sitecore sitecore6

我想查询Context用户访问的项而不是读访问权。即,通常我会做这样的事情:

Sitecore.Context.Database.SelectItems( “/ Sitecore的/内容/ somepath / *”);

...这会为用户具有读取权限的所有项返回Item []数组。是否有一种机制只检索用户具有写访问权限的项目?或者我是否必须遍历这些项目并单独检查它们?

如何检查上下文用户是否具有给定项目的此权限?

2 个答案:

答案 0 :(得分:3)

如果您希望它“看起来”,就像您没有遍历列表一样,您可以在LINQ查询中执行安全检查。像这样:

var result = Sitecore.Context.Database.SelectItems("/sitecore/content/somepath/*").Where(x => x.Security.CanWrite(Sitecore.Context.User));

答案 1 :(得分:1)

我认为您可能必须单独处理这些问题,因为Sitecore Query没有任何功能或属性来检查项目的安全属性。 (据我所知,Fast Query也没有)。