2014-04-07 13 views
6

Ich habe eine ASP.NET MVC5-Anwendung mit der generierten Startkonfiguration für die Verwendung von OWIN.OWIN lehnt Authentifizierung Cookie am nächsten Tag

Der Benutzer meldet sich bei meiner Anwendung an, lässt den Browser geöffnet, aber wenn er am nächsten Tag versucht, darauf zuzugreifen, leitet die Anwendung den Benutzer zur Anmeldeseite um.

Ich kann dieses Problem nicht auf meinem Entwicklungscomputer reproduzieren, es tritt nur auf meinem aktuellen Shared Hosting-Provider. Eigentlich hat es bei meinem vorherigen Provider richtig funktioniert.

Der Anwendungspool wird von Zeit zu Zeit neu gestartet, aber wenn ich manuell einen Recyclingvorgang mache, werden die Tokens meiner Meinung nach nicht ungültig gemacht (was meines Wissens das erwartete Verhalten sein sollte).

Ich versuchte Ablauf Einstellung explizit Schiebe- und die Cookie-Gültigkeit zu erhöhen, aber es hatte keine Wirkung:

// Enable the application to use a cookie to store information for the signed in user 
app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
    ExpireTimeSpan = TimeSpan.FromDays(365*20), 
    SlidingExpiration = true, 
    LoginPath = new PathString("/Account/Login") 
}); 
// Use a cookie to temporarily store information about a user logging in with a third party login provider 
app.UseExternalSignInCookie(DefaultAuthenticationTypes.ExternalCookie); 

Ich bin mit .NET Framework 4.5. Ich habe versucht, alle meine NuGet-Pakete auf den neuesten Stand zu bringen, aber es hat das Problem nicht gelöst.

Ich überprüft und die Ablaufzeit der Cookies gesendet und sie sind korrekt, das sollte nicht das Problem sein. Es passiert in verschiedenen Browsern.

+0

ändert Ihr Provider dynamisch das Betriebssystem Ihrer App? Wenn dies der Fall ist, würde sich der Maschinenschlüssel ändern und das Ticket wäre ungültig. Stellen Sie den Computerschlüssel in Ihrer web.config ein und versuchen Sie es erneut, falls dies der Fall ist. – tugberk

+0

Mein Hosting-Anbieter gibt an, dass immer dieselbe Maschine meine Anwendung bedient. Ich habe versucht, einen vordefinierten Maschinenknopf basierend auf [http://msdn.microsoft.com/en-us/library/ff649308.aspx](http://msdn.microsoft.com/en-us/library/ff649308.aspx] zu setzen. Ich werde es in den nächsten Tagen testen, um sicherzustellen, dass es in Ordnung ist. Danke für die Antworten! – nzsb

Antwort

8

Es ist, weil der Cookie mit der <machineKey> von ASP.NET geschützt ist. Es scheint, als würde Ihr Provider etwas veranlassen, um einen App-Domain-Recycling auszulösen, oder Sie befinden sich in einer Webfarm, sodass der Computerschlüssel nicht konsistent ist. Versuchen Sie, <machineKey> in Ihrer web.config festzulegen.

Verwandte Themen