【发布时间】:2017-02-17 10:53:53
【问题描述】:
在 ASP.NET Core 应用程序中,我想创建某些角色作为管理不同用户权限的基础。可悲的是,文档详细说明了如何使用自定义角色,例如在控制器/动作中,但不是如何创建它们。我发现我可以为此使用RoleManager<IdentityRole>,当在应用程序中注册其定义的和 ASP.NET Core 身份时,实例会自动注入到控制器构造函数中。
这让我可以像这样添加一个自定义角色:
var testRole = new IdentityRole("TestRole");
if(!roleManager.RoleExistsAsync(testRole.Name).Result) {
roleManager.CreateAsync(testRole);
}
它工作并在数据库中创建角色。但是这个检查总是会在数据库上产生开销,调用特定的控制器/动作。所以我想在我的应用程序启动后检查一次,如果自定义角色存在并添加它们。 Startup.cs 中的ConfigureServices 方法似乎对此很有用。
但是:我如何创建RoleManager<IdentityRole> 类的实例来执行此操作?我想在这里使用最佳实践方法,而不是通过自己创建依赖实例来搞乱,这似乎会导致很多工作,因为它没有很好的文档记录并且肯定不会遵循最佳实践,因为 ASP.NET Core 正在使用像这样的事情的依赖注入(这在我看来也是合理的)。
换句话说:我需要在控制器的外部使用依赖注入。
【问题讨论】:
-
您可能对我的项目感兴趣,该项目为身份用户、角色和声明提供管理github.com/joeaudette/cloudscribe
标签: c# asp.net-core asp.net-core-mvc user-roles