2011-10-26 104 views
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访问该网站,但我需要更深入:)而且我找不到办法...

先谢谢您!

回答

1

由于两个,SPWebSPList,继承SPSecurableObject所有你需要做的就是加载SPList对象,你要改变的权限列表。

一个SPList可以装载任何by URLlist title

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

它不是必需的角色分配的修改后更新网站或列表。

+0

哇这很简单... Sharepoint对我来说是非常新的,我们让我玩索赔,这就是为什么我迷路了! 非常感谢您的帮助! – Gun

相关问题