以编程方式将角色添加到身份
Posted
技术标签:
【中文标题】以编程方式将角色添加到身份【英文标题】:Adding role to Identity programmatically 【发布时间】:2021-12-18 15:44:02 【问题描述】:在每件事之前我应该说:“为什么以前容易的事情现在变得如此困难!!!!”
我为我的 EF 数据上下文创建了一个 Class Library
项目。我也想使用Identity
。所以我创建了这样的上下文类:
public class Context : IdentityDbContext
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseSqlServer("Server=.;Database=MyDB1;Trusted_Connection=True;");
base.OnConfiguring(optionsBuilder);
然后我添加迁移和更新数据库。所以我想写一些代码来添加角色到角色表并使用: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>
实例化,我收到此错误:
没有给出与 'RoleManager.RoleManager(IRoleStore, IEnumerable
, ILookupNormalizer, IdentityErrorDescriber, ILogger )'的所需形式参数 'store' 相对应的参数
从RoleManager<IdentityRole>
实例化时如何添加此参数?
如何在类库项目中将角色添加到角色表?
谢谢
【问题讨论】:
【参考方案1】:希望下面的代码对您有所帮助。
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);
【讨论】:
抱歉没用 您是否仍然收到与该更改相同的错误? 我编辑了你的答案 我很高兴它成功了。谢谢。以上是关于以编程方式将角色添加到身份的主要内容,如果未能解决你的问题,请参考以下文章
Drupal Group模块,以编程方式将用户添加到具有特定角色的组中
以编程方式将 UISearchBar 添加到普通 ViewController 中以编程方式添加的 UITableView