Sharepoint 2010 以编程方式将声明添加到列表中

Sharepoint 2010 以编程方式将声明添加到列表中,sharepoint-2010,claims-based-identity,Sharepoint 2010,Claims Based Identity,我写了一小段代码,在Sharepoint中为一个站点添加声明。 我这样说: using (SPSite site = new SPSite(url)) { using (SPWeb web = site.OpenWeb()) { SPClaimProviderManager claimMgr = SPClaimProviderManager.Local; if

我写了一小段代码,在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访问该网站,但我需要更深入:)我找不到方法来做


提前谢谢你

由于
SPWeb
SPList
都是从
SPSecurableObject
继承的,所以您所要做的就是为要更改权限的列表加载
SPList
对象

SPList
可以通过以下方式加载:

在您的示例中:

        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);
                } 
            } 
        } 

修改角色分配后,不需要更新web或列表。

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

SPList
可以通过以下方式加载:

在您的示例中:

        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);
                } 
            } 
        } 

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

哇,这很简单。。。Sharepoint对我来说是非常新的,我们让我玩索赔,所以这就是我迷路的原因!非常感谢你的帮助!哇,很简单。。。Sharepoint对我来说是非常新的,我们让我玩索赔,所以这就是我迷路的原因!非常感谢你的帮助!