在IdentityServer 4中添加对IdentityRole的声明

时间:2017-12-30 13:46:53

标签: c# asp.net-core asp.net-core-identity

在将我的应用程序升级到.NET Core 2.0和IdentityServer 4之前,我会使用它。

var role = new IdentityRole("Admin");
role.Claims.Add(new IdentityRoleClaim<string> { ClaimType = "IsAdmin", ClaimValue = "True" });

这不再有效,我试过谷歌,但看不清楚。确切的错误是:

error

如何使用IdentityServer 4向IdentityRole添加声明?

3 个答案:

答案 0 :(得分:0)

您可以通过

解决此问题

Microsoft.AspNet.Identity.AspNetCoreCompat 安装 NuGet 。然后添加 Microsoft.AspNet.Identity.AspNetCoreCompat.

的参考

之后,您将获得如下图所示的异常。

enter image description here

安装 Microsoft.AspNet.Identity.EntityFramework, 并修复所有编译器错误。

enter image description here

答案 1 :(得分:0)

您需要首先使用role创建CreateAsync,然后使用AddClaimAsync

  var role = new IdentityRole("Admin");
  await _roleManager.CreateAsync(role);
  await _roleManager.AddClaimAsync(role, new Claim(type: "IsAdmin", value: "True"));

答案 2 :(得分:-1)

您现在不能直接直接访问Claims集合。 您必须改为使用RoleManager的相关功能。 注入您的RoleManager,然后按以下方式使用它:

var role = new IdentityRole("Admin");
var claim = new Claim(type: "IsAdmin", value: "True");
await roleManager.CreateAsync(role);
await roleManager.AddClaimAsync(role, claim);

根据@Joe的输入进行更新