Sharepoint 2010,基于当前用户确定对SPListItem的访问权限

本文关键字:SPListItem 访问 权限 访问权 2010 于当前 用户 Sharepoint | 更新日期: 2023-09-27 18:00:28

我正在使用CAML Queryy来获取包含ContentType的所有列表项,但我还需要知道当前用户是否有权查看该文件。

那部分我不知道该怎么检查。

我使用这个示例作为如何获取与内容类型相关的项目的参考。

https://sharepoint.stackexchange.com/questions/14566/how-to-find-all-documents-of-a-certain-content-type

谢谢。

Sharepoint 2010,基于当前用户确定对SPListItem的访问权限

默认情况下,在SharePoint中,我们的代码模拟为执行web请求的用户运行。因此,CAML查询返回的项目已经进行了安全性修剪。也就是说,结果集只包含允许当前用户"查看"的项目。

在某些情况下,您需要使用系统权限执行CAML查询。为此,必须使用系统帐户令牌打开SPSite对象:

using (SPSite elevatedSite = new SPSite("http://server-url", SPUserToken.SystemAccount))
{
  // open web; list; 
  // execute caml query with system account priveliges.
}

在这种情况下,您可以使用方法DoesUserHavePermissions:检查/确保对某个列表项的权限

SPListItem item = //...
if (item.DoesUserHavePermissions(SPContext.Current.Web.CurrentUser, SPBasePermissions.ViewListItems))
{
  // futher actions if user has permission goes here.
}

需要注意的是,必须使用SPUser参数调用DoesUserHavePermissions的重载。没有的重载将使用网站的"当前用户"。这是自使用系统帐户令牌打开网站以来的系统帐户。