【问题标题】:How to programmatically grant 'Read' permission to a Group/user for a particular list in sharepoint如何以编程方式向组/用户授予共享点中特定列表的“读取”权限
【发布时间】:2013-01-09 06:14:23
【问题描述】:

如何以编程方式向组/用户授予特定列表的“读取”权限?

我在手动分享点中创建了一个群组。 也创建了一个列表。

现在我想向特定组/用户的特定列表添加“读取”权限。

webpart 工作正常。

但不更新权限。 请帮忙。

我正在粘贴下面的代码...

 protected void Button1_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text))
            {
                Label4.Text = "Please Enter Some Values";
                //Label4.ForeColor = System.Drawing.Color.Red;
            }
            else
            {

                SPWeb web = SPContext.Current.Web;
                SPGroup group = web.SiteGroups[TextBox2.Text];
                SPWebApplication webApp = web.Site.WebApplication;
                webApp.FormDigestSettings.Enabled = false;
                web.AllowUnsafeUpdates = true;
                SPRoleDefinition rDefination = web.RoleDefinitions.GetByType(SPRoleType.Reader);
                 SPRoleAssignment rAssignment = new SPRoleAssignment(group);

                rAssignment.RoleDefinitionBindings.Add(rDefination);
                SPList list = web.Lists[TextBox1.Text];
                list.BreakRoleInheritance(true);
                //SPItem item = list.
                //item.RoleAssignments.Add(rAssignment);
                list.Update();
                Label4.Text = "Permission is successfully on item";
                //Label4.ForeColor = System.Drawing.Color.Green;
                TextBox1.Text = string.Empty;
                TextBox2.Text = string.Empty;
                web.RoleAssignments.Add(rAssignment);
                web.Update();
                web.AllowUnsafeUpdates = false;
                webApp.FormDigestSettings.Enabled = true;

            }
     }

【问题讨论】:

  • 我也面临这样的问题。我有一个具有只读权限的列表,并希望在页面加载时更新该列表。它对管理员用户来说工作正常。但不会更新只读用户的列表。

标签: asp.net sharepoint permissions


【解决方案1】:

尝试使用下面的代码。 runwithelevatedprivileges 将允许简单用户更新列表。

SPSecurity.RunWithElevatedPrivileges(delegate()
{
    if (string.IsNullOrEmpty(TextBox1.Text) || string.IsNullOrEmpty(TextBox2.Text))
            {
                Label4.Text = "Please Enter Some Values";
                //Label4.ForeColor = System.Drawing.Color.Red;
            }
            else
            {

                SPWeb web = SPContext.Current.Web;
                SPGroup group = web.SiteGroups[TextBox2.Text];
                SPWebApplication webApp = web.Site.WebApplication;
                webApp.FormDigestSettings.Enabled = false;
                web.AllowUnsafeUpdates = true;
                SPRoleDefinition rDefination = web.RoleDefinitions.GetByType(SPRoleType.Reader);
                 SPRoleAssignment rAssignment = new SPRoleAssignment(group);

                rAssignment.RoleDefinitionBindings.Add(rDefination);
                SPList list = web.Lists[TextBox1.Text];
                list.BreakRoleInheritance(true);
                //SPItem item = list.
                //item.RoleAssignments.Add(rAssignment);
                list.Update();
                Label4.Text = "Permission is successfully on item";
                //Label4.ForeColor = System.Drawing.Color.Green;
                TextBox1.Text = string.Empty;
                TextBox2.Text = string.Empty;
                web.RoleAssignments.Add(rAssignment);
                web.Update();
                web.AllowUnsafeUpdates = false;
                webApp.FormDigestSettings.Enabled = true;

            }

});

【讨论】:

    【解决方案2】:
    SPListItem listitem = listPositional.Items.Add();
                               listitem["Title"] = "data1";
                               //listitem["Enc"] = "Encrypted data";
                               listitem.Update();
                               listitem.BreakRoleInheritance(false);
    
                               SPGroup group = myWeb.SiteGroups["Restricted Readers"];
    
                                                             GrantPermission(listitem, myWeb, SPRoleType.Reader, group);
    
    
    private static void GrantPermission(SPListItem CurrentListItem, SPWeb oSPWeb, SPRoleType SPRoleType, SPPrincipal SPPrincipal)
        {
    
            try
            {
    
                //Create one Role Definition i.e Full Controls, Contribute rights or Read rights etc.
                SPRoleDefinition oSPRoleDefinition = oSPWeb.RoleDefinitions.GetByType(SPRoleType);
                //Create one Role Assignment for the specified SP user or group.
                SPRoleAssignment oSPRoleAssignment = new SPRoleAssignment(SPPrincipal);
                //Bind the role definition to the role assignment object created for the user or group.
                oSPRoleAssignment.RoleDefinitionBindings.Add(oSPRoleDefinition);
                //Add it to the specified list item.
                CurrentListItem.RoleAssignments.Add(oSPRoleAssignment);
                //update the list item so that specified user assignment will have the access.
                CurrentListItem.Update();
    
            }
            catch (Exception ex)
            {
    
                throw ex;
    
            }
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 2011-09-18
      • 2013-10-20
      • 2015-09-22
      • 1970-01-01
      相关资源
      最近更新 更多