用户声明身份
User's Claims Identity
目前有两种登录方式。一种是通过活动目录,我可以获得用户的声明身份。
第二种是通过自定义注册表单,即使我可以使用下面的代码获取用户的索赔信息:
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
我遇到的问题是,我正在尝试获取自定义注册声明的值,然后使用以下代码将其保存给用户 table,但是没有成功
var myemail = identity.Claims.First(c => c.ClaimType == "EmailAddress").Value;
错误说:
"Sequence contains no elements"
索赔类型是
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
不是 EmailAddress
。如果您不想重复整个类型,请使用 ClaimTypes.Email
:
var myemail = identity.Claims.First(c => c.ClaimType == ClaimTypes.Email).Value
您的错误表明没有 EmailAddress
类型的声明,这是正确的。然后你尝试获取空集合的第一个元素,你得到了实际的异常。
目前有两种登录方式。一种是通过活动目录,我可以获得用户的声明身份。
第二种是通过自定义注册表单,即使我可以使用下面的代码获取用户的索赔信息:
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
我遇到的问题是,我正在尝试获取自定义注册声明的值,然后使用以下代码将其保存给用户 table,但是没有成功
var myemail = identity.Claims.First(c => c.ClaimType == "EmailAddress").Value;
错误说:
"Sequence contains no elements"
索赔类型是
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
不是 EmailAddress
。如果您不想重复整个类型,请使用 ClaimTypes.Email
:
var myemail = identity.Claims.First(c => c.ClaimType == ClaimTypes.Email).Value
您的错误表明没有 EmailAddress
类型的声明,这是正确的。然后你尝试获取空集合的第一个元素,你得到了实际的异常。