В приложении ASP.NET Core я хочу создать определенные роли в качестве основы для управления различными правами пользователя. К сожалению, в документации сообщается о том, как использовать пользовательские роли, например. в контроллерах/действиях, но не в том, как их создавать. Я узнал, что для этого могу использовать RoleManager<IdentityRole>
, где экземпляр автоматически вводится в конструктор-контроллер, когда его определение и идентификатор ядра ASP.NET регистрируются в приложении.Идентификатор ядра ASP.NET Добавление пользовательских ролей пользователя при запуске приложения
Это позволило мне добавить пользовательскую роль, как это:
var testRole = new IdentityRole("TestRole");
if(!roleManager.RoleExistsAsync(testRole.Name).Result) {
roleManager.CreateAsync(testRole);
}
Он работает и создание роли в базе данных. Но эта проверка всегда создает накладные расходы в базе данных, вызывая конкретный контроллер/действие. Поэтому я хочу проверить один раз после запуска моего приложения, если пользовательская роль существует и добавляет их. Метод ConfigureServices
в Startup.cs кажется хорошим для этого.
Но: Как я могу создать экземпляр класса RoleManager<IdentityRole>
для этого? Я хотел бы использовать подход с лучшей практикой здесь, а не вмешиваться, создавая отдельные экземпляры самостоятельно, что, кажется, вызывает много работы, поскольку оно не хорошо документировано и, несомненно, не будет следовать лучшим практикам, поскольку ASP.NET Core использует инъекции зависимостей для таких вещей (что также разумно в моем оппионе).
Другими словами: Мне нужно использовать зависимую инъекцию снаружи контроллера.
вы можете быть заинтересованы в моем проекте, который обеспечивает управление для пользователей удостоверений, ролями и утверждениями https://github.com/joeaudette/cloudscribe –