22

在我的 ASP.NET Web API 项目中,我使用了不记名令牌授权,并添加了一些自定义声明,如下所示:

var authType = AuthConfig.OAuthOptions.AuthenticationType;
var identity = new ClaimsIdentity(authType);
identity.AddClaim(new Claim(ClaimTypes.Name, vm.Username));

// custom claim
identity.AddClaim(new Claim("CompanyID", profile.CompanyId.ToString()));

有什么方法可以访问控制器中的这个额外的声明值,而无需额外访问数据库?

4

1 回答 1

32

当然,在受保护的控制器中,您可以执行以下操作:

 ClaimsPrincipal principal = Request.GetRequestContext().Principal as ClaimsPrincipal;
 var customClaimValue = principal.Claims.Where(c => c.Type == "CompanyID").Single().Value;
于 2014-10-27T14:16:30.727 回答