我使用Visual Studio 2015创建ASP.NET MVC 5应用程序。我在身份验证后使用Identity框架向用户添加声明。根据内置ClaimTypes
添加声明非常容易,但我在挑战时添加了一个布尔的自定义声明。
我已经创建了这个静态类来保存我的自定义声明类型:
public static class CustomClaimTypes
{
public static readonly string IsEmployee = "http://example.com/claims/isemployee";
}
然后我尝试向ClaimsIdentity
对象添加自定义声明:
userIdentity.AddClaim(new Claim(CustomClaimTypes.IsEmployee, isEmployee));
它在上面的行中给出了这个错误:
无法转换为' bool?'到' System.Security.Claims.ClaimsIdentity'
我发现的所有示例都在添加字符串。你如何添加bool,int或其他类型?感谢。
答案 0 :(得分:5)
声明只能表示为字符串。任何数字,布尔值,指南,以及添加到索赔集合时都必须是字符串。所以ToString()
它。
userIdentity.AddClaim(
new Claim(CustomClaimTypes.IsEmployee,
isEmployee.GetValueOrDefault(false).ToString()));
答案 1 :(得分:4)
您还可以将 valueType 作为第三个参数传递。
userIdentity.AddClaim(
new Claim(CustomClaimTypes.IsEmployee,
isEmployee.ToString(),
ClaimValueTypes.Boolean));
因此在前端,您将获得布尔类型值,而不是字符串。