2016-11-19 1 views
0

Ich erstelle mein erstes WebAPI-Projekt, und habe meinen ersten Haken gefunden. Es scheint, dass, weil das WebAPI-Modell zustandslos ist, mir keine Sitzung zur Verfügung steht. Mein Versuch, eine Sitzungsvariable beim Anmelden hinzuzufügen, ist fehlgeschlagen.Web-API hat keine Sitzung - muss überprüfen, ob Benutzer authentifiziert ist

public static void CreateSession(int userId, string firstName, string surname, int timezoneOffset, string timezoneName) 
{ 
    // Create the object. 
    var session = new SessionToken 
    { 
     FirstName = firstName, 
     Surname = surname, 
     TimezoneName = timezoneName, 
     TimezoneOffset = timezoneOffset, 
     UserID = userId 
    }; 

    // Is there an existing session? 
    var existing = HttpContext.Current.Session[SESSIONNAME]; 

    // If so, we need to kill it and refresh it. Not sure why we would have this case though. 
    if (existing != null) 
     HttpContext.Current.Session.Remove(SESSIONNAME); 

    // Create the session. 
    HttpContext.Current.Session.Add(SESSIONNAME, session); 

} 

Sitzung ist null, und das liegt an dem statuslosen Modell, das von WebAPI verwandt wird.

Wie kann ich dies mit Web API erreichen? Wie kann ich etwas überprüfen und abfragen, um festzustellen, ob der aktuelle Benutzer gültig ist? Meine Sitzung würde normalerweise einige Elemente wie den Namen des Chaps enthalten, um sie auf dem Layout-Bildschirm zu rendern - aber es sieht so aus, als ob das momentan nicht möglich ist.

+0

Siehe reden: http://stackoverflow.com/a/13758602 –

+0

Und eine andere Art und Weise, wenn Sie in sicherer es wollen, dann verwenden Authentifizierungs-Token wie [JWT] (https://jwt.io/introduction/) oder benutzerdefiniert. –

+0

Das scheint Sitzungen zu ermöglichen. Ist das Best Practice (wie Web-API scheint speziell loszuwerden Sitzungen), oder ist das eine geeignete Lösung? Ich habe das gesehen, aber nie mein Projekt mit "Einzelne Benutzerkonten" ausgewählt. http://www.dotnetcurry.com/aspnet/1223/secure-aspnet-web-api-using-tokens-owin-angularjs – Craig

Antwort

0

Der empfohlene Ansatz ist die Verwendung der zustandslosen Authentifizierung und Autorisierung mit Tokens.

Seit einigen Jahren ist es sehr einfach, Ihre WebAPI so zu konfigurieren, dass der OAuth2-Workflow mit einer OWIN-Middleware integriert wird.

Erfahren Sie, wie following this tutorial.

Was Sie Sitzung Artikel nennen, in OAuth2 Sie about claims.

Verwandte Themen