我下载了WebApp-RoleClaims-DotNet示例应用程序,但无论如何都无法使其工作。
about页面包含以下相当简单的代码:
ClaimsIdentity claimsId = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
var appRoles = new List<String>();
foreach (Claim claim in ClaimsPrincipal.Current.FindAll(claimsId.RoleClaimType))
appRoles.Add(claim.Value);
ViewData["appRoles"] = appRoles;
return View();
现在,表达式ClaimsPrincipal.Current.FindAll(claimsId.RoleClaimType)
返回一个空列表,即使我已分配了适当的角色。
我想这是因为 - 根据调试器 - 角色声明的类型为roles
,而不是正确的命名空间http://schemas.microsoft.com/ws/2008/06/identity/claims/role
。
我错过了什么?
答案 0 :(得分:0)
你有没有得到这个工作?
我发现这很有效:
ClaimsIdentity id = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
var appRoles = new List<string>();
foreach (Claim claim in ClaimsPrincipal.Current.Claims)
{
appRoles.Add(claim.Value);
}
我希望它可以帮助有类似问题的人。