Sharepoint 2010 以编程方式将声明添加到列表中
我写了一小段代码,在Sharepoint中为一个站点添加声明。 我这样说: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
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对我来说是非常新的,我们让我玩索赔,所以这就是我迷路的原因!非常感谢你的帮助!