以编程方式将角色添加到身份

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&lt;IdentityRole&gt; 实例化,我收到此错误:

没有给出与 'RoleManager.RoleManager(IRoleStore, IEnumerable, ILookupNormalizer, IdentityErrorDescriber, ILogger)'的所需形式参数 'store' 相对应的参数

RoleManager&lt;IdentityRole&gt; 实例化时如何添加此参数?

如何在类库项目中将角色添加到角色表?

谢谢

【问题讨论】:

【参考方案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模块,以编程方式将用户添加到具有特定角色的组中

Sitecore - 以编程方式清除用户的缓存

如何将角色添加到 asp 身份承载令牌

Google Cloud将用户添加到项目中

Spring过滤器将角色添加到来自令牌的请求

以编程方式将 UISearchBar 添加到普通 ViewController 中以编程方式添加的 UITableView