用户';s索赔身份
本文关键字:身份 用户 | 更新日期: 2023-09-27 18:22:14
目前有两种登录方式。一种是通过active directory登录,我可以获得用户的声明标识。
第二个是通过自定义注册表,即使我可以使用下面的代码获得用户的索赔信息:
foreach (Microsoft.IdentityModel.Claims.Claim claim in identity.Claims)
{
Console.Write("Type: " + claim.type);
}
输出:
claimtype=http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
value=test@mail.com
我遇到的问题是,我试图获得自定义寄存器声明的值,然后使用下面的代码将其保存到用户表中,但没有运气
var myemail = identity.Claims.First(c => c.ClaimType == "EmailAddress").Value;
错误提示:
"序列不包含任何元素"
索赔类型为
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
而不是CCD_ 1。如果您不想重复整个类型,请使用ClaimTypes.Email
:
var myemail = identity.Claims.First(c => c.ClaimType == ClaimTypes.Email).Value
那么,您的错误表明不存在EmailAddress
类型的声明,这是正确的。然后尝试获取空集合的第一个元素,得到实际的异常。