我有一个正在做的项目。它使用 Thinktecture Identity Server 将令牌传递给我的应用程序。问题是我需要从令牌中提取声明值,到目前为止,我能够进行 Linq 查询以获取声明值(我可以通过调试在结果中看到它),但是我无法提取实际值,我试过串,toarray等。它一直给我实际的类型。我的代码如下:
var company = ClaimsPrincipal.Current.Identities.ToArray();
var claimType1 = company[0].Claims.ToArray();
var claimtest = from x in claimType1 where x.Type == "http://identityserver.thinktecture.com/claims/profileclaims/company" select x.Value;
String claimfinal = claimtest.ToString();
ViewBag.Message = claimtest.GetType().ToString() + " " + claimfinal;
这是输出:
System.Linq.Enumerable+WhereSelectArrayIterator`2[System.Security.Claims.Claim,System.String] System.Linq.Enumerable+WhereSelectArrayIterator`2[System.Security.Claims.Claim,System.String]
仅供参考:这在控制器中仅用于测试目的。理想情况下,我希望能够处理索赔,并将其中的各种信息存储在单独的后台类中