2016-04-11 9 views
5

Ich bin mit ASP .NET Core-RC1 mit Facebook-Authentifizierung und silding Fenster Cookie Ablauf wie folgt aufgebaut:ASP .NET Core-Cookie-Authentifizierung Ablauf ändert sich von Zeitstempel "Session" bei der Rückkehr

app.UseIdentity(); 
    app.UseFacebookAuthentication(); 

und

services.AddIdentity<ApplicationUser, IdentityRole>((options => 
     { 
      options.Cookies.ApplicationCookie.CookieName = "myauthcookie"; 
      options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(5); 
      options.Cookies.ApplicationCookie.SlidingExpiration = true; 

     })) 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders(); 

Dies funktioniert einwandfrei, wenn sich der Benutzer zum ersten Mal anmeldet - der Cookie-Ablauf ist korrekt eingestellt. Wenn der Benutzer jedoch zu der Seite zurückkehrt, wird der Ablauf des Cookies auf "Sitzung" gesetzt, sodass der Benutzer in der Praxis jeden zweiten Besuch erneut authentifizieren muss.

Warum passiert das? Habe ich es nicht richtig konfiguriert?

aktualisieren: Ich habe jetzt einige Tests ohne SlidingExpiration getan, und das Problem bleibt das gleiche. Nach dem Zurückkehren zu der Seite wird der Ablauf des Cookies in "Sitzung" geändert. Ich verwende Chrome.

Auch ich renne nicht auf https. Könnte das ein Faktor sein?

+0

der Facebook-Cookie ist ein anderes Cookie, müssen Sie wahrscheinlich ähnlich wie die Hauptanwendungcookie setzen, schauen Sie sich Optionen an.Cookies.External ... –

+0

Das macht eine Menge Sinn. Aber warum wird das Ablaufdatum meines Authentifizierungs-Cookies überhaupt richtig gesetzt? Ich melde mich jedes Mal mit Facebook an. – severin

+0

Schließlich erhältst du einen Anwendungscookie und er sollte wie konfiguriert funktionieren. Ich vermute nur, dass es möglicherweise eine Interaktionslogik mit dem externen Cookie gibt, die du auch im Rahmen des Facebook-Prozesses erhältst ähnliche Einstellungen sind möglicherweise erforderlich, ich spucke nur, wenn ich sicher bin, dass ich als Antwort posten würde –

Antwort

0

Es stellte sich heraus, dass das Upgrade auf ASP.NET Core RC2 dieses Problem behob, was darauf hindeutet, dass es sich möglicherweise um einen Fehler handelte.

3

Kurzantwort

Set isPersistent: true wenn SignInManager.ExternalLoginSignInAsync Aufruf.

Einzelheiten

Im ASP.NET-Core Web Application Template, das AccountController.ExternalLoginCallback Methode enthält diesen Code:

_signInManager.ExternalLoginSignInAsync(
    info.LoginProvider, 
    info.ProviderKey, 
    isPersistent: true);  <------ set a persistent cookie. 

Wenn wir isPersistent: true gesetzt, wenn ExternalLoginSignInAsync Aufruf, diese Startkonfiguration ...

services.AddIdentity<ApplicationUser, IdentityRole>(options => 
    { 
     options.Cookies.ApplicationCookie.CookieName = "MyApplicationCookie"; 
     options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(5); 
     options.Cookies.ApplicationCookie.SlidingExpiration = true; 
    }) 
    .AddEntityFrameworkStores<ApplicationDbContext>() 
    .AddDefaultTokenProviders(); 

... führt zu dieser Anwendung Cookie ...

MyApplicationCookie is persistent.

... die über Browsersitzungen hinweg bestehen bleibt.

+1

Vielen Dank für Ihre Antwort, Shaun. Obwohl ich es in meiner Frage nicht angegeben habe, setze ich bereits'isPersistent: true' in meinem Aufruf an den SignInManager, so dass der Code, den ich gerade ausführe, genau das ist, was du gepostet hast, weshalb der Cookie richtig gesetzt ist die erste Anmeldung Mein Problem ist, dass bei einem wiederkehrenden Besuch "Expires on" überschrieben und auf "Session" gesetzt wird. – severin

+0

@fiskeboss Das ist seltsam. Ich habe nicht das gleiche Verhalten. Könnte bitte bitte versuchen mit 'options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromSeconds (10) 'und aktualisieren Sie die Seite alle fünf Sekunden, um zu sehen, was mit Ihrem Cookie passiert. Bei mir wird die Aktualisierung alle fünf Sekunden um weitere zehn Sekunden verlängert. Was passiert mit dir? –

+0

Auch, auf welchem ​​Webbrowser erleben Sie das? –

Verwandte Themen