Einfache tokenbasierte Authentifizierung / Autorisierung im asp.net-Core für Mongodb-Datenspeicher

8

Ich muss ziemlich einfache Auth Mechanizm mit im Wesentlichen 2 Rollen implementieren: Owners und Users . Und ich denke, dass Enum dafür ausreichend sein wird. App selbst ist SPA mit Webapi über Asp.net Core implementiert. Ich habe Artikel gesehen - wie man es mit EF Identity implementiert, aber ihre Modelle sehen viel komplexer aus, als ich wirklich brauche und EF orientiert sich an SQL db und ich benutze Mongo. Also sieht mein Benutzer so aus:

%Vor%

Welche Schnittstellen muss ich implementieren und zu DI hinzufügen, um sie verwenden zu können? [Authorize] und [Authorize(Roles="Users")] -Attribut und sie funktionierten korrekt basierend auf Token, die ich im Header sende?

    
silent_coder 23.05.2016, 17:05
quelle

2 Antworten

18

Lass mich ein wenig @ Adems Antwort klären. Sie müssen benutzerdefinierte Middleware auf spezifische Weise implementieren. Es gibt 3 abstrakte Klassen, die implementiert werden müssen, um dies zu implementieren (die Antwort ist korrekt für asp.net core rc2 btw):

Microsoft.AspNetCore.Builder.AuthenticationOptions  %Code%   Microsoft.AspNetCore.Authentication.AuthenticationMiddleware<TOptions>

und fügen Sie diese Middleware dann Ihrer Startup-Klasse hinzu.

Codebeispiel:

%Vor%

S. Der Code dient nur zur Veranschaulichung der Idee. Sie müssen natürlich Ihren eigenen Handler implementieren.

    
Ph0en1x 24.05.2016, 14:01
quelle
9

Sie können benutzerdefiniertes middleware verwenden, um Benutzer zu authentifizieren und claims (Name, Rollen, etc.) zu setzen.

Ich werde versuchen, eine einfache middleware zu schreiben:

Erstellen Sie zuerst ein middlware class :

%Vor%

Dann verwende middleware in Startup.cs wie folgt:

%Vor%

Verwenden Sie schließlich Authorize Attribut:

%Vor%     
adem caglin 23.05.2016 19:08
quelle