我使用的是Asp .net核心2.1
如何在登录时向索赔添加userId等值,并在Web API中检索索赔值?
为了在登录后添加自定义声明,您可以在新的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答案可以作为您问题的替代解决方案。