2017-05-30 1 views
1

Ich muss Anonym Endpunkt Endpoint zulassen aber immer noch überprüfen, ob Benutzer authentifiziert ist, geben Sie einige zusätzliche Daten.ServiceStack JWT-Authentifizierung überprüfen, ob authentifizierte

mit [Authentifizieren] Attribute I

var session = SessionAs<AuthUserSession>(); 

verwenden kann und session.IsAuthenticated dann

es funktioniert gut, aber ohne [authentifiziert] Attribut Sitzung leer ist (neue Sitzung mit neuer ID generiert und Alle Requisiten sind nicht mit Benutzerdaten gefüllt)

Wie überprüft man, ob der Benutzer authentifiziert wird ohne [Authenticate] attibute mit der Anfrage, die jwt-Token verwendet?

Antwort

1

Der JwtAuthProvider ist ein IAuthWithRequest Anbieter, die nur die JWT Token validiert und liefert die passende Antwort HTTP-Fehler, wenn das Token ungültig ist , wenn sie die den Antrag authentifizieren muss, z.B. Wenn Services mit dem Attribut [Authenticate] kommentiert wurden. Wenn Dienste keine Authentifizierung erfordern, werden die IAuthWithRequest Auth Provider und JWT Bearer Token nicht überprüft und die Benutzersitzung wird nicht automatisch ausgefüllt.

Aber in den neuesten v4.5.9 that's now on MyGet neuen APIs haben zu JWT AuthProvider hinzugefügt worden, um sie in Benutzersitzungen erstellen individuellen JWT Tokens und konvertieren Sie speziell eine Usersession von einem JWT Token mit erstellen:

var session = JwtAuthProvider.CreateSessionFromJwt(base.Request); 

Welche just a helper für die Lösung des registrierten JwtAuthProviderReader und ruft seine ConvertJwtToSession() API ist:

var jwtProvider = (JwtAuthProviderReader) 
    AuthenticateService.GetAuthProvider(JwtAuthProviderReader.Name); 
var session = jwtProvider.ConvertJwtToSession(base.Request, base.Request.GetJwtToken()); 
+0

ich asp.net Kern verwende und Code verwenden Sie vorgesehen thows Linie Ausnahme JwtAuthProvider 453. jede Ideen? – Roman

+0

base.Request.GetJwtToken(); ist Null. Ich benutze Typoskript-Client und alles gut, wie ich mit Attribut erwähnt. – Roman

+0

@Roman können Sie Ihre Frage mit der TypeScript-Clientanforderung aktualisieren, die das Token sendet – mythz