IsPersistent nicht funktioniert - Cookie gilt nur für aktuelle Sitzung

Ich habe eine ASP.NET MVC 5 Anwendung mit ASP.NET Identity 2.1.0 für die Authentifizierung der Benutzer.

Alles hat gut funktioniert in der Vergangenheit, aber jetzt habe ich herausgefunden, dass anhaltende Benutzer-sessions nicht mehr funktionieren. Ich kann nicht sagen, welche Veränderung brach, aber es funktionierte, wenn ich umgesetzt Identität (konvertiert die Anwendung von SimpleMembership) und dies ist meine Logik habe ich im moment:

var result = await SignInManager.PasswordSignInAsync(model.UserName, model.Password, 
                                     model.RememberMe, shouldLockout: true);

SignInManager ist mein ApplicationSignInManager basierend auf SignInManager<ApplicationUser, int> und model.RememberMe ist true.

Und mein setup:

app.CreatePerOwinContext<ApplicationSignInManager>(ApplicationSignInManager.Create);

app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login"),
        Provider = new CookieAuthenticationProvider
            {
                OnValidateIdentity = ApplicationCookieIdentityValidator.OnValidateIdentity(
                    validateInterval: TimeSpan.FromMinutes(0),
                    regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
            }
    });
app.UseTwoFactorSignInCookie(DefaultAuthenticationTypes.TwoFactorCookie, TimeSpan.FromMinutes(5));
app.UseTwoFactorRememberBrowserCookie(DefaultAuthenticationTypes.TwoFactorRememberBrowserCookie);
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie);

Alles funktioniert gut, außer die Persistenz des Benutzer-sessions. Ich habe die cookies zurückgegeben, die von meinem server und die .AspNet.ApplicationCookie wird immer zurückgegeben "gültig für aktuelle Sitzung" statt ein Datum in der Zukunft. Wenn ich also schließen und wieder öffnen des Browsers muss ich wieder anmelden...

Hat jemand eine Idee, warum das so ist funktioniert nicht (mehr)?

P. S.: ich habe überschrieben SignInAsync in meinem ApplicationSignInManager weil ich einige eigene Logik gibt, aber ich selbst habe mit dem debugger, und für die folgenden nennen:

await base.SignInAsync(user, isPersistent, rememberBrowser);

isPersistent ist true, so sollte es schaffen, ein persistent cookie.

  • Ich vermute validateInterval: TimeSpan.FromMinutes(0) verursachen kann. Da bei jeder Anfrage regeneriert cookie und setzt einen neuen ein. Versuchen Sie validateInterval auf etwas mehr als 0 und sehen, ob das funktioniert.
  • Danke, das war es. War, dass Veränderungen, die mit V 2.1? Weil es auf jeden Fall funktionierte am Anfang (mit V 2.0). Jedenfalls: diesen Post als Antwort und ich werde es akzeptieren. Ich brauche jetzt Weg finden, um dieses, wie ich brauche (weil SSO), die Validierung auf jede Anfrage.
InformationsquelleAutor ChrFin | 2014-09-08
Schreibe einen Kommentar