我下载了WebApp-RoleClaims-DotNet示例应用程序,但由于某种原因无法正常工作。

“关于”页面包含以下相当简单的代码:

        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

我想念什么?

最佳答案

你有没有做这个工作?

我发现这可行:

        ClaimsIdentity id = ClaimsPrincipal.Current.Identity as ClaimsIdentity;
        var appRoles = new List<string>();

        foreach (Claim claim in ClaimsPrincipal.Current.Claims)
        {
            appRoles.Add(claim.Value);
        }

我希望它可以帮助遇到类似问题的人。

关于asp.net-mvc - 为什么角色声明的类型不正确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29317910/

10-13 06:26