如何向声明添加值并从 Web 检索它 api - .Net 核心
How to add values to claims and retrieve it from web api - .Net core
我正在使用 Asp .net core 2.1
登录后如何添加自定义声明?
为了在登录后添加自定义声明,您可以在新的 ClaimsIdentity 实例上使用 AddClaim 方法
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "some Name"));
claims.Add(new Claim(ClaimTypes.Email, "abc@xyz.com"));
var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(identity);
然后要检索声明,您可以在 ClaimsPrincipal 实例上使用 LINQ:
var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
string email = identity.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
更新:
在尝试自己探索和解决问题时,我发现 答案可以作为您问题的替代解决方案。
我正在使用 Asp .net core 2.1
登录后如何添加自定义声明?
为了在登录后添加自定义声明,您可以在新的 ClaimsIdentity 实例上使用 AddClaim 方法
var claims = new List<Claim>();
claims.Add(new Claim(ClaimTypes.Name, "some Name"));
claims.Add(new Claim(ClaimTypes.Email, "abc@xyz.com"));
var identity = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);
var ctx = Request.GetOwinContext();
var authenticationManager = ctx.Authentication;
authenticationManager.SignIn(identity);
然后要检索声明,您可以在 ClaimsPrincipal 实例上使用 LINQ:
var identity = (ClaimsPrincipal)Thread.CurrentPrincipal;
string email = identity.Claims.Where(c => c.Type == ClaimTypes.Email).Select(c => c.Value).SingleOrDefault();
更新:
在尝试自己探索和解决问题时,我发现