.net-Web-API. Gewusst wie: abrufen von Benutzer-Eigenschaften (user-Id) von access-token? Request-handler-code basierend auf aktuellen Benutzer/token
Lassen Sie uns sagen, Sie haben einen .net Web API server für einen Benutzer-basierten Anwendung. Der Benutzer loggt sich in die Anwendung mit Benutzername und Passwort an den server gesendet wird, und die app wird ein access-token zurück.
Nun die app will zeigen, dass Teile der Benutzer-Informationen (gespeichert auf dem server in einer DB). So macht es die http-Anfrage an den server und schließt den access token in den header.
Wie wollen Sie verhindern, dass der server nur senden Sie zurück zu der Anwendung, die die relevanten Informationen für diesen bestimmten Benutzer-und niemand sonst die Informationen.
Gibt es eine Möglichkeit, wenn ich Sie erhalten Ihren username und Passwort ein und bin erstellen einen token zurück zu senden, verknüpfen Sie Ihre Benutzer-id mit, die token? So, jetzt, wenn ich eine Anfrage wie /GetUserFoodPreferences, ich kann gerade mal die userId aus dem token und Abfrage für meine db basierend auf dieser id.
Ist das der richtige Ansatz?
InformationsquelleAutor user3489727 | 2015-01-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
In Ihrem Projekt, gehen Sie zu
Providers/ApplicationOAuthProvider.cs
durchsuchen Sie die Methodepublic override Task TokenEndpoint(OAuthTokenEndpointContext context)
, und fügen Sie diese Zeile nach derforeach
:Dein code würde wie folgt Aussehen:
InformationsquelleAutor Aldogeno
Speicherung der Benutzer-id oder eine andere Art der id verbunden, die dem Benutzer in einem cookie wäre der gängige Weg. Sie können dann prüfen, dass die cookie-Anfrage.Cookies["name"];) für die id zu bestätigen, um die Benutzer.
EDIT: Wenn man natürlich mit der API-Controller und authentifizieren Ihre Benutzer ordnungsgemäß, die Sie verwenden können:
HINWEIS : vergessen Sie nicht
import Microsoft.AspNet.Identity
Bibliothek.Wie ist es Sie die Authentifizierung der Benutzer?
Die get-id-Methode kommt als Teil von MVC in der folgenden Bibliothek Microsoft.AspNet.Identität jedoch seinen Wert zu prüfen, was Authentifizierungsanbieter / Methode, die Sie verwenden.
Ja, die Methode funktioniert, wenn ich importieren von Microsoft.AspNet.Identität.
Ich bin nur mit der Standard-Authentifizierung, die ein web-api-Projekt kommt mit.
InformationsquelleAutor RattyLaa
Ich habe ein ähnliches Problem, welches ich lösen, indem erstellen eines individuellen OAuthProvider.
Diese Weise wird der Benutzername in die zurückgegebene token an den client. Wenn der client senden die Anfrage zurück mit dem token, können Sie den Benutzernamen aus der Anfrage der Kontext wie folgt:
Müssen Sie die CustomizedAuthrize Attribut für die Controller oder Aktionen, die Sie schützen möchten.
In meinem Fall ist es wie:
InformationsquelleAutor Yang Zhang