1

我编写了一小段代码,在 Sharepoint 中向网站添加了声明。我这样进行:

using (SPSite site = new SPSite(url)) 
        { 
            using (SPWeb web = site.OpenWeb())
            { 
                SPClaimProviderManager claimMgr = SPClaimProviderManager.Local; 
                if (claimMgr != null) 
                {
                    SPClaim claim = new SPClaim(type, claim_name, Microsoft.IdentityModel.Claims.ClaimValueTypes.String, SPOriginalIssuers.Format(SPOriginalIssuerType.ClaimProvider, provider)); 
                    string userName = claimMgr.EncodeClaim(claim); 
                    SPUserInfo info = new SPUserInfo 
                    { LoginName = userName, 
                        Name = name }; 

                    SPRoleAssignment roleAssignment = new SPRoleAssignment(info.LoginName, info.Email, info.Name, info.Notes); 
                    roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["Read"]); 
                    web.RoleAssignments.Add(roleAssignment); 
                    web.Update(); 
                } 
            } 
        } 

很简单,但我想将声明添加到我创建的列表中。到目前为止,我正在使用 SPSite 和 SPWeb 访问该站点,但我需要更深入:) 我找不到方法...

先感谢您!

4

1 回答 1

1

由于 SPWeb和都SPList继承自SPSecurableObject您所要做的就是加载SPList要更改权限的列表的对象。

ASPList可以通过 URL列表标题加载:

SPList listByTitle = web.Lists["Tasks"];
SPList listByUrl = web.GetList("/server/relative/Lists/Tasks");

在您的示例中:

        using (SPSite site = new SPSite(url)) 
        { 
            using (SPWeb web = site.OpenWeb())
            { 
                SPClaimProviderManager claimMgr = SPClaimProviderManager.Local; 
                if (claimMgr != null) 
                {
                    SPClaim claim = new SPClaim(type, claim_name, Microsoft.IdentityModel.Claims.ClaimValueTypes.String, SPOriginalIssuers.Format(SPOriginalIssuerType.ClaimProvider, provider)); 
                    string userName = claimMgr.EncodeClaim(claim); 
                    SPUserInfo info = new SPUserInfo 
                    { LoginName = userName, 
                        Name = name }; 

                    SPRoleAssignment roleAssignment = new SPRoleAssignment(info.LoginName, info.Email, info.Name, info.Notes); 
                    roleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions["Read"]); 
                    // web.RoleAssignments.Add(roleAssignment); 
                    // web.Update(); 

                    SPList list = web.Lists["TheListTitle"];
                    list.RoleAssignments.Add(roleAssignment);
                } 
            } 
        } 

角色分配修改后无需更新网页或列表。

于 2011-10-26T09:34:34.270 回答