2010-04-20 59 views
3

下面的代碼總是返回(這是不正確,因爲用戶有完全控制權限在網站級別):如何使用客戶端對象模型檢查SharePoint 2010上的用戶權限?

Site site; 
BasePermissions permissionMask; 
ClientResult<bool> result; 

permissionMask = new BasePermissions(); 
permissionMask.Set(PermissionKind.ManageWeb); 
result = site.DoesUserHavePermissions(permissionMask); 

return result.Value; 

我試圖利用新的SharePoint 2010客戶端對象模型。當我發現DoesUserHavePermissions方法時,我很興奮,但似乎我並不確定我是否知道如何使用它。我不知道我是否使用了正確的掩碼,或者是否應該指定希望檢查權限級別的用戶帳戶?任何幫助將不勝感激。謝謝。

回答

4

缺少一件重要的事情 - 客戶端上下文。該對象負責通過任何SharePoint Client對象模型對象實際執行查詢。

代碼應修改如下:

ClientContext clientContext; 
Site site; 
BasePermissions permissionMask; 
ClientResult<bool> result; 

permissionMask = new BasePermissions(); 
permissionMask.Set(PermissionKind.ManageWeb); 
//if we want to check ManageWeb permission 
clientContext = new ClientContext(siteUri); 
//siteUri is a method parameter passed as a string 
clientContext.Credentials = credential; 
//credential is a method parameter passed as a NetworkCredential object 
//that is the user for which we are checking the ManageWeb permission 
site = clientContext.Web; 
result = site.DoesUserHavePermissions(permissionMask); 

return result.Value; 

如果用戶被分配ManageWeb權限,還是否則爲false這將返回true。 有關權限枚舉的完整列表,請查看此MSDN page

1

只是想我會添加一些我使用的代碼。這幾乎是相同的,但沒有膨脹。

using (var context = new ClientContext(siteUrl)) 
{ 
    context.Load(context.Web); 
    context.ExecuteQuery(); 
    BasePermissions permissionMask; 
    ClientResult<bool> hasPermissions; 
    permissionMask = new BasePermissions(); 
    permissionMask.Set(PermissionKind.ManageWeb); 
    hasPermissions = context.Web.DoesUserHavePermissions(permissionMask); 

} 
相關問題