Ich habe viele ähnliche Seiten im Web gesehen, aber die meisten verwenden ein neues Projekt anstelle eines vorhandenen oder verfügen nicht über die erforderlichen Funktionen. Ich habe also ein vorhandenes MVC 5
Projekt und möchte ASP.NET MVC5 Identity mit Anmelde-, E-Mail-Bestätigungs- und Kennwortrücksetzfunktionen integrieren .
Darüber hinaus muss ich alle erforderlichen Tabellen in der Datenbank erstellen, z. B. Benutzer, Rollen, Gruppen usw. (ich verwende EF Code First in meinem Projekt). Gibt es einen Artikel oder ein Beispiel, das diesen Anforderungen entspricht? Jeder Vorschlag wäre dankbar. Danke im Voraus...
Antworten:
Das Konfigurieren der Identität für Ihr vorhandenes Projekt ist keine schwierige Sache. Sie müssen ein NuGet-Paket installieren und eine kleine Konfiguration vornehmen.
Installieren Sie zuerst diese NuGet-Pakete mit der Package Manager-Konsole:
Fügen Sie eine Benutzerklasse und mit
IdentityUser
Vererbung hinzu:Machen Sie dasselbe für die Rolle:
Ändern Sie Ihre
DbContext
Eltern vonDbContext
zuIdentityDbContext<AppUser>
wie folgt aus :Wenn Sie dieselbe Verbindungszeichenfolge verwenden und die Migration aktivieren, erstellt EF die erforderlichen Tabellen für Sie.
Optional können Sie
UserManager
Ihre gewünschte Konfiguration und Anpassung erweitern:Da Identity auf OWIN basiert, müssen Sie auch OWIN konfigurieren:
Fügen Sie dem
App_Start
Ordner eine Klasse hinzu (oder woanders, wenn Sie möchten). Diese Klasse wird von OWIN verwendet. Dies wird Ihre Startklasse sein.Fast fertig, fügen Sie einfach diese Codezeile zu Ihrer
web.config
Datei hinzu, damit OWIN Ihre Startklasse finden kann.Jetzt können Sie im gesamten Projekt Identity verwenden, genau wie jedes neue Projekt, das bereits von VS installiert wurde. Betrachten Sie beispielsweise die Anmeldeaktion
Sie können Rollen erstellen und Ihren Benutzern hinzufügen:
Sie können einem Benutzer auch eine Rolle hinzufügen, wie folgt:
Durch die Verwendung können
Authorize
Sie Ihre Aktionen oder Controller schützen:oder
Sie können auch zusätzliche Pakete installieren und so konfigurieren, dass sie Ihren Anforderungen entsprechen
Microsoft.Owin.Security.Facebook
oder wie Sie möchten.Hinweis: Vergessen Sie nicht, Ihren Dateien relevante Namespaces hinzuzufügen:
Sie können auch meine anderen Antworten wie diese und diese für die erweiterte Verwendung von Identität sehen.
quelle
AppRole
Identity verwendet, um Benutzer zu klassifizieren. Und daRole
s undRoleManager
bereits von Identity selbst implementiert wurden, müssen Sie bereits implementierten Code nicht neu schreiben. Ich werde den Beitrag aktualisieren, um Ihnen zu zeigen, wie Sie Rollen verwenden können. Und wie ich bereits sagte, müssen Sie nur addAppUser
undAppRole
Entitäten hinzufügen , um die Identität zu initialisieren. Indem Sie IhreDbContext
vonIdentityDbContext<AppUser>
allen erforderlichen Tabellen erben, fügen Sie Ihre Tabelle hinzu. Sie müssen nichts tun, nur die Migration aktivieren.Microsoft.AspNet.Identity.EntityFramework
auf Ihrer Domain und anderen für die Benutzeroberfläche.web.config
. Ersetzen Sie nicht die alte. Lesen Sie dies für weitere Informationen . Ich denke, Ihre MVC hat auch aktualisiert.AspNetRoles
AspNetUserClaims
AspNetUserLogins
AspNetUserRoles
undAspNetUsers
Dies habe ich getan, um Identity in eine vorhandene Datenbank zu integrieren.
Erstellen Sie ein MVC-Beispielprojekt mit einer MVC-Vorlage. Hier finden Sie den gesamten Code, der für die Identitätsimplementierung erforderlich ist - Startup.Auth.cs, IdentityConfig.cs, Account Controller-Code, Manage Controller, Modelle und verwandte Ansichten.
Installieren Sie die erforderlichen Nuget-Pakete für Identity und OWIN. Sie erhalten eine Vorstellung, indem Sie die Referenzen im Beispielprojekt und die Antwort von @Sam sehen
Kopieren Sie den gesamten Code in Ihr vorhandenes Projekt. Bitte vergessen Sie nicht, die Verbindungszeichenfolge "DefaultConnection" hinzuzufügen, damit Identity Ihrer Datenbank zugeordnet werden kann. Überprüfen Sie die ApplicationDBContext-Klasse in IdentityModel.cs, wo Sie den Verweis auf die Verbindungszeichenfolge "DefaultConnection" finden.
Dies ist das SQL-Skript, das ich in meiner vorhandenen Datenbank ausgeführt habe, um die erforderlichen Tabellen zu erstellen:
Überprüfen und beheben Sie alle verbleibenden Fehler und Sie sind fertig. Identität wird den Rest erledigen :)
quelle
Ich empfehle IdentityServer. Dies ist ein .NET Foundation- Projekt und behandelt viele Probleme bei der Authentifizierung und Autorisierung.
Überblick
IdentityServer ist ein .NET / Katana-basiertes Framework und eine hostbare Komponente, mit der Single Sign-On und Zugriffskontrolle für moderne Webanwendungen und APIs mithilfe von Protokollen wie OpenID Connect und OAuth2 implementiert werden können. Es unterstützt eine Vielzahl von Clients wie Mobile, Web, SPAs und Desktop-Anwendungen und ist erweiterbar, um die Integration in neue und vorhandene Architekturen zu ermöglichen.
Für weitere Informationen, z
Schauen Sie sich die Dokumentation und die Demo an .
quelle