0

特定のグループが特定のサイト コレクションへの読み取りアクセス権を持っているかどうかを確認しようとしています。

私は1日半試してみましたが、3つの半分の異なる解決策を見つけたように感じます!

私がこれまでに持っているコードフラグメントは次のとおりです。

using (SPSite site = new SPSite(this.GenerateAbsoluteUri(moduleCode, academicYear)))
{
    using (SPWeb web = site.OpenWeb())
    {
        for (int i = web.SiteGroups.Count - 1; i >= 0; i--)
        {
            SPGroup group = web.SiteGroups[i];

            if (Regex.IsMatch(group.Name, theGroupImLookingFor))
            {

しかし、その後何?

Google の検索結果のほとんどは役割について教えてくれますが、役割をグループに関連付ける方法がわかりません。

助けてください!

4

2 に答える 2

2

ユーザー (アカウント) または SharePoint グループにアクセス許可を割り当てるには、特定の順序で確認する必要があるオブジェクトがいくつかあります。最初に、ロールを割り当てるセキュリティ プリンシパル (SPUser または SPGroup) を取得する必要があります。次に行う必要があるのは、割り当てたい実際のアクセス許可 (ロール) を取得することです (例: 読み取り、フル コントロールなど)。次に、SPRoleAssignment オブジェクトを作成し、コンストラクターで、アクセス許可を割り当てたい SPUser または SPGroup (セキュリティ プリンシパル) に渡す必要があります。ここで、役割割り当てオブジェクトの RoleDefinitionBindings コレクションに役割定義を追加する必要があります。次に、実際の役割の割り当てを Web (サイト) に追加し、Web を更新する必要があります。以下は完全なコードリストです。

// Create the site that contains our list
using(SPSite oSite = new SPSite("<<my site url>>"))
{
    // Open the web object
  using(SPWeb oWeb = oSite.OpenWeb())
  {

    // Get the group that we want to add the user to
    SPGroup oGroup = oWeb.Groups["<<group name>>"];

    // Get the role definition we want to assign ex: Full Control
    SPRoleDefinition oRole = oWeb.RoleDefinitions["<< role name>>"];

    // Create the role assignment object
    SPRoleAssignment oRoleAssignment = new SPRoleAssignment(oGroup);

    // Add the role definition to the role assignemnt. 
    // This will assign the specific permission to the security principal for this role          assignemnt.
    oRoleAssignment.RoleDefinitionBindings.Add(oRole);

     // Now we need to add the role assignment to the web
     oWeb.RoleAssignments.Add(oRoleAssignment);

    // Now update the web
    oWeb.Update();
   }
}
于 2010-12-22T22:55:30.453 に答える
0

私自身のコード (Sharepoint 2010) の抜粋です。役割の作成:

SPRoleDefinition network_role = new SPRoleDefinition();
                network_role.BasePermissions = SPBasePermissions.AddListItems |
                    SPBasePermissions.BrowseDirectories |
                    SPBasePermissions.EditListItems |
                    SPBasePermissions.DeleteListItems;
                network_role.Name = "Network - Project Member";
                network_role.Description = "Provides permissions required for a member of a project.";

                web.RoleDefinitions.Add(network_role);

グループへのロールの追加:

var assign = new SPRoleAssignment(oweb.SiteGroups["Network Project - " + item.Code]);
assign.RoleDefinitionBindings.Add(network_role);
于 2010-12-21T11:18:59.770 に答える