以编程方式向身份添加角色
Adding role to Identity programmatically
在每件事之前我应该说:“为什么以前容易的事情现在变得如此困难!!!!”
我为我的 EF 数据上下文创建了一个 Class Library
项目。我也想用 Identity
。所以我像这样创建上下文 class:
public class Context : IdentityDbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=.;Database=MyDB1;Trusted_Connection=True;");
base.OnConfiguring(optionsBuilder);
}
}
我添加了迁移和更新数据库。所以我想写一些代码来为角色 table 添加角色并使用:RoleManager<IdentityRole>
:
private readonly RoleManager<IdentityRole> _rolesManager;
public RoleRepository()
{
_rolesManager = new RoleManager<IdentityRole>();
}
public async Task AddRole(string roleName)
{
var role = new IdentityRole();
role.Name = roleName;
await _roleManager.CreateAsync(role);
}
问题是我无法从 RoleManager<IdentityRole>
实例化,我得到了这个错误:
There is no argument given that corresponds to the required formal parameter 'store' of 'RoleManager.RoleManager(IRoleStore, IEnumerable<IRoleValidator>, ILookupNormalizer, IdentityErrorDescriber, ILogger<RoleManager>)'
从 RoleManager<IdentityRole>
实例化时如何添加此参数?
如何在 class 库项目中将角色添加到角色 table?
谢谢
希望下面的代码对您有所帮助。
using (var context = new ApplicationDbContext())
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context), null, null, null, null);
var role = new IdentityRole(RoleName);
var result = await roleManager.RoleExistsAsync(RoleName);
if (!result)
{
await roleManager.CreateAsync(role);
}
}
在每件事之前我应该说:“为什么以前容易的事情现在变得如此困难!!!!”
我为我的 EF 数据上下文创建了一个 Class Library
项目。我也想用 Identity
。所以我像这样创建上下文 class:
public class Context : IdentityDbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=.;Database=MyDB1;Trusted_Connection=True;");
base.OnConfiguring(optionsBuilder);
}
}
我添加了迁移和更新数据库。所以我想写一些代码来为角色 table 添加角色并使用:RoleManager<IdentityRole>
:
private readonly RoleManager<IdentityRole> _rolesManager;
public RoleRepository()
{
_rolesManager = new RoleManager<IdentityRole>();
}
public async Task AddRole(string roleName)
{
var role = new IdentityRole();
role.Name = roleName;
await _roleManager.CreateAsync(role);
}
问题是我无法从 RoleManager<IdentityRole>
实例化,我得到了这个错误:
There is no argument given that corresponds to the required formal parameter 'store' of 'RoleManager.RoleManager(IRoleStore, IEnumerable<IRoleValidator>, ILookupNormalizer, IdentityErrorDescriber, ILogger<RoleManager>)'
从 RoleManager<IdentityRole>
实例化时如何添加此参数?
如何在 class 库项目中将角色添加到角色 table?
谢谢
希望下面的代码对您有所帮助。
using (var context = new ApplicationDbContext())
{
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context), null, null, null, null);
var role = new IdentityRole(RoleName);
var result = await roleManager.RoleExistsAsync(RoleName);
if (!result)
{
await roleManager.CreateAsync(role);
}
}