2014-06-29 20 views
9

Gli utenti devono effettuare l'accesso ogni 20 minuti circa.MVC 5 Logout timeout

Una di quelle situazioni in cui non si sa dove guardare. Sto usando C# MVC 5 IdentityFramework 1.0.0

Voglio passare il tempo a 4 ore.

Fino ad ora ho provato in web.config:

<system.web> 
    <sessionState timeout="2880"></sessionState> 
     <authentication mode="Forms"> 
     <forms loginUrl="~/Account/Login" timeout="2880" /> 
    </authentication> 
</system.web> 

e in Startup.Auth.sc:

app.UseCookieAuthentication(new CookieAuthenticationOptions 
     { 
      ExpireTimeSpan = TimeSpan.FromHours(4), 
      CookieSecure = CookieSecureOption.Never, 
      CookieHttpOnly = false, 
      SlidingExpiration = true, 
      AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie, 
      LoginPath = new PathString("/Account/Login") 
     }); 

Che cosa mi manca?

EDIT - SOLUZIONE

La soluzione è quella di mettere in machineKey web.config sotto system.web. Generatore di chiavi può essere trovato http://aspnetresources.com/tools/machineKey

Ho anche migrato a Identity 2.0 e mantenuto queste impostazioni. Migrazione utilizzando questo blog come guida: http://typecastexception.com/post/2014/07/13/ASPNET-Identity-20-Extending-Identity-Models-and-Using-Integer-Keys-Instead-of-Strings.aspx

+0

Qual è il problema in questo momento? –

+0

Gli utenti devono effettuare l'accesso ogni 20 minuti circa. – HerGiz

+0

Sei riuscito a risolvere il tuo problema? Sono interessato alla soluzione – Daniel

risposta

0

Assicurarsi di non avere attività di background su ajax in quanto influisce sulla sessione (SlidingExpiration è true per impostazione predefinita). Inoltre, devi cancellare manualmente i vecchi cookie dopo aver cambiato ExpireTimeStamp da 14 giorni a un valore inferiore.

+0

Io non la penso così. Ho poche richieste Ajax, ma solo per moduli qua e là. È più intelligente quindi passare alla sessione o al database anziché cucinare? – HerGiz

+0

Usa sessione ..... –

2

Accade anche se si esegue il sito localmente? Dai uno sguardo allo this blog post descrivendo un caso simile.

Il punto dall'essere post sul blog:

... ricordate che autenticazione basata su form utilizza machineKey del computer per crittografare il cookie di autenticazione moduli. "Potrebbe essere la chiave della macchina cambiare nel tempo sul mio server di hosting condiviso?", Mi chiedevo.

Prima di inviare email loro a chiedere, ho guardato la documentazione su MSDN per machineKey e ha scoperto che v'è una modalità AutoGenerate che può essere impostato per rigenerare un nuovo machineKey ogni volta che il processo host per un'applicazione web avvia ... dopo 20 minuti di inattività! Ah ah!