目前,我正在开展的一个项目是以不太好的方式进行安全保护。我试图将其升级到基于声明的安全性,因为我认为它与我们存储的信息类型匹配得更好。但是,我是新手,所以尽快试图吸收很多。
我们需要存储:
最后一个让我有点沮丧。我想我需要创建一个具有客户端站点ID和角色值的自定义声明类型。
Rights.PossessProperty
,或者我是否过度思考它?提前感谢您指出我正确的方向。正如我所说,我正在吸收Pluralsight课程等等,但我也喜欢发货。 :)
答案 0 :(得分:1)
您正在查看错误的声明类 - 不推荐使用System.IdentityModel.Claim中的声明类。
新的是System.Security.Claims。
本书为您介绍了这一理念: http://msdn.microsoft.com/en-us/library/ff423674.aspx
答案 1 :(得分:1)
假设您将从数据库中获得“用户到部分”。 Identity.HasClaim将允许您验证用户的部分。就自定义声明而言,它只是一个字符串,需要与下面示例中的字符串类似。
public class UsersSections
{
public int SectionId { get; set; }
public int UserId { get; set; }
}
var userSectionsList = new List<UsersSections>
{
new UsersSections
{
SectionId = 1000,
UserId = 200
},
new UsersSections
{
SectionId = 2000,
UserId = 200
}
};
var identity = new ClaimsIdentity();
identity.AddClaim(new Claim(ClaimTypes.NameIdentifier,"I am a user with a userid of 200"));
foreach (var usersSections in userSectionsList)
{
identity.AddClaim(new Claim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/section","1000"));
}
if (identity.HasClaim("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/section", "1000"))
{
}