3

次のコードは常にfalseを返します(ユーザーはサイト レベルでフル コントロール権限を持っているため、これは正しくありません)。

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

2 に答える 2

4

クライアント コンテキストという重要な要素が 1 つ欠けていました。このオブジェクトは、SharePoint クライアント オブジェクト モデル オブジェクトに対するクエリの実際の実行を担当します。

コードを次のように変更する必要があります。

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 アクセス許可が割り当てられている場合は true を返し、そうでない場合は false を返します。アクセス許可列挙の完全なリストについては、このMSDN ページを参照してください。

于 2010-05-11T08:14:47.773 に答える
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);

}
于 2013-08-09T09:00:19.720 に答える