在ASP.NET中,我们可以手动添加声明来使原始标识更丰富。但是,手动添加的声明可能会在下一次请求中丢失。这是因为它们不会存储在身份验证cookie中。为了解决这个问题,我们需要将声明存储在身份验证cookie中。下面是一个示例:
在登录时添加声明:
var identity = new ClaimsIdentity(new[] {
new Claim(ClaimTypes.Name, user.Name),
new Claim(ClaimTypes.Email, user.Email),
new Claim(ClaimTypes.Country, user.Country),
}, DefaultAuthenticationTypes.ApplicationCookie);
HttpContext.GetOwinContext().Authentication.SignIn(identity);
将声明存储在cookie中,这些声明在下一次请求中将可用。
在需要检索声明的任何地方使用以下代码:
var identity = (ClaimsIdentity)User.Identity;
IEnumerable claims = identity.Claims;
var country = claims.FirstOrDefault(c => c.Type == ClaimTypes.Country)?.Value;
以上代码将声明提取到变量“country”中。如果声明不存在,则它将为空。