在将我的应用程序升级到.NET Core 2.0和IdentityServer 4之前,我会使用它。
var role = new IdentityRole("Admin");
role.Claims.Add(new IdentityRoleClaim<string> { ClaimType = "IsAdmin", ClaimValue = "True" });
这不再有效,我试过谷歌,但看不清楚。确切的错误是:
如何使用IdentityServer 4向IdentityRole添加声明?
答案 0 :(得分:0)
您可以通过
解决此问题从 Microsoft.AspNet.Identity.AspNetCoreCompat
安装 NuGet
。然后添加 Microsoft.AspNet.Identity.AspNetCoreCompat.
之后,您将获得如下图所示的异常。
安装 Microsoft.AspNet.Identity.EntityFramework,
并修复所有编译器错误。
答案 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的输入进行更新