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中,我们的代码模拟为执行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
的重载。没有的重载将使用网站的"当前用户"。这是自使用系统帐户令牌打开网站以来的系统帐户。