如何为声明添加值并从web api - .Net核心中检索它

问题描述 投票:0回答:1

我使用的是Asp .net核心2.1

如何在登录时向索赔添加userId等值,并在Web API中检索索赔值?

asp.net-web-api asp.net-core claims-based-identity claims
1个回答
0
投票

为了在登录后添加自定义声明,您可以在新的ClaimsIdentity实例上使用AddClaim方法

var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "some Name"));
claims.Add(new Claim(ClaimTypes.Email, "[email protected]"));
var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(identity);

然后,要检索声明,可以使用LINQ而不是ClaimsPrincipal实例:

var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
string email = identity.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();

更新:在尝试自己探索和解决问题时,我发现this答案可以作为您问题的替代解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.