1

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

我在Share Point 中手动创建了一个组。也创建了一个列表。

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

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;

            }
     }
4

2 回答 2

0

尝试使用下面的代码。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;

            }

});
于 2013-03-30T17:42:29.670 回答
0
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;

        }
        }
于 2013-10-09T10:11:13.843 回答