2014-04-07 14 views
6

Mam aplikację ASP.NET MVC5 z wygenerowaną konfiguracją startową do korzystania z OWIN.OWIN odrzuca plik cookie uwierzytelniający następnego dnia

Użytkownik loguje się do mojej aplikacji, utrzymuje przeglądarkę otwartą, ale jeśli próbuje uzyskać do niej dostęp następnego dnia, aplikacja przekierowuje użytkownika na stronę logowania.

Nie mogę odtworzyć tego problemu na moim komputerze programisty, pojawia się tylko na moim obecnym udostępnionym dostawcy hostingu. Właściwie działało to poprawnie na moim poprzednim dostawcy.

Pula aplikacji zostanie ponownie uruchomiona raz na jakiś czas, ale zgodnie z moim doświadczeniem, jeśli ręcznie zrobię recykling, nie spowoduje to unieważnienia tokenów (co powinno być oczekiwanym zachowaniem, o ile wiem).

Próbowałem ustawienie wygasania przesuwne i wyraźnie wzrasta ważność plików cookie, ale to nie miało żadnego wpływu:

// 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); 

używam .NET Framework 4.5. Próbowałem zaktualizować wszystkie moje pakiety NuGet do najnowszego, ale to nie rozwiązało problemu.

Sprawdziłem i upłynął czas ważności plików cookie wysłanych i są one poprawne, co nie powinno być problemem. Zdarza się to w różnych przeglądarkach.

+0

Czy Twój dostawca dynamicznie zmienia system operacyjny, w którym działa Twoja aplikacja? jeśli tak, klucz maszyny zmieniłby się i bilet byłby nieważny. Ustaw klucz komputera na swoim web.config i spróbuj ponownie, jeśli tak jest. – tugberk

+0

Mój dostawca usług hostingowych stwierdza, że ​​zawsze ta sama maszyna będzie obsługiwała moją aplikację. Próbowałem ustawić predefiniowany klucz maszynowy na podstawie [http://msdn.microsoft.com/en-us/library/ff649308.aspx](http://msdn.microsoft.com/en-us/library/ff649308.aspx) , Przetestuję to w ciągu najbliższych kilku dni, aby upewnić się, że wszystko jest w porządku. Dzięki za odpowiedzi! – nzsb

Odpowiedz

8

Dzieje się tak dlatego, że plik cookie jest chroniony za pomocą <machineKey> z ASP.NET. Wygląda na to, że Twój dostawca robi coś, aby uruchomić przetwarzanie domeny aplikacji lub jesteś na farmie internetowej, więc klucz komputera nie jest spójny. Spróbuj ustawić <machineKey> w swoim pliku web.config.