ASP.NET Kern-Identität Hinzufügen von benutzerdefinierten Rollen beim starten der Anwendung

In einem ASP.NET Core-Anwendung, die ich will, um bestimmte Rollen, die als Grundlage für die Verwaltung verschiedener Benutzer-Berechtigungen. Leider ist die Dokumentation informieren detailliert, wie benutzerdefinierte Rollen z.B. in Controller/Aktionen, aber nicht, wie um Sie zu erstellen. Ich fand heraus, dass ich kann verwenden RoleManager<IdentityRole> für diese, wo die Instanz wird automatisch injiziert, die in einem controller-Konstruktor, wenn ein definierter und ASP.NET Kern-Identität registriert ist, in der Anwendung.

Diese lassen Sie mich hinzufügen, um eine benutzerdefinierte Rolle, wie diese:

var testRole = new IdentityRole("TestRole");
if(!roleManager.RoleExistsAsync(testRole.Name).Result) {
    roleManager.CreateAsync(testRole);
}

Es funktioniert, und erstellen Sie die Rolle in der Datenbank. Aber diese Prüfung wird immer overhead für die Datenbank, den Aufruf der bestimmten controller/action. Ich will also überprüfen einmal nach meiner Bewerbung begonnen hat, wenn die benutzerdefinierte Funktion, die vorhanden ist, und fügen Sie Sie hinzu. Die ConfigureServices Methode in Startup.cs scheint gut für diese.

Aber: Wie kann ich erstellen Sie eine Instanz der RoleManager<IdentityRole> Klasse, dies zu tun? Ich möchte eine best-practice-Ansatz hier und nicht andauernd durch die Schaffung von je Instanzen auf meine eigene, die scheint, zu verursachen eine Menge Arbeit, da es nicht gut dokumentiert und wird sicherlich nicht Folgen best practices, da ASP.NET Kern ist die Verwendung von dependency injection für Dinge wie diese (das ist auch angemessen in meiner Meinung nach).

In anderen Worten: ich dependeny injection außerhalb ein controller.

vielleicht haben Sie Interesse in meinem Projekt bietet ein management für die Identität von Benutzern, Rollen und Ansprüche github.com/joeaudette/cloudscribe

InformationsquelleAutor Lion | 2016-10-08

Schreibe einen Kommentar