2011-06-08 12 views
12

sto creando il mio ticket di autenticazione utilizzando il seguente codice:Autenticazione ASP.NET scorrevole scadenza tempo sul biglietto personalizzato

string formsCookieStr = string.Empty; 
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
      1,        // version 
      username,      // user name 
      DateTime.Now,     // issue time 
      DateTime.Now.AddMinutes(30), // expires 
      false,       // Persistence 
      userRoleData     // user data 
    ); 
formsCookieStr = FormsAuthentication.Encrypt(ticket); 
HttpCookie FormsCookie = new HttpCookie(FormsAuthentication.FormsCookieName, formsCookieStr); 
HttpContext.Response.Cookies.Add(FormsCookie); 

Voglio la scadenza per essere una scadenza variabile - ogni volta che il client invia una richiesta poi la scadenza dovrebbe essere ripristinata a 30 minuti. Tuttavia, sto creando il ticket solo quando l'utente accede per la prima volta. ASP.NET continuerà a far scorrere automaticamente il tempo di scadenza per me, o devo fare qualcosa 'manualmente' per implementare la scadenza di scorrimento?

risposta

10

Questo è configurato nella sezione forms di web.config. Il modo in scadenza variabile funziona è che su ogni richiesta il motore ASP.NET riscrive il cookie di autenticazione incrementando il timeout:

<authentication mode="Forms"> 
    <forms 
     loginUrl="~/Account/LogOn" 
     timeout="2880" 
     slidingExpiration="true" 
    /> 
</authentication> 

Nota tuttavia che l'abilitazione scadenza variabile è una delle cose considerate come cattiva pratica nel ASP.NET Security Practices.

+2

grazie. Ma sicuramente l'impostazione predefinita quando non si utilizzano i ticket personalizzati sta scivando la scadenza, altrimenti l'utente verrebbe disconnesso indipendentemente dall'attuale data dell'ultima richiesta? Non osservo questo comportamento e i documenti dicono che la scadenza di scorrimento è l'impostazione predefinita. Sto per scadere scendendo di default con il mio ticket personalizzato? (Non ho l'impostazione slidingExpiration in web.config) – Journeyman

+11

"Il modo in cui scorre la scadenza è che su ogni richiesta il motore ASP.NET riscrive il cookie di autenticazione incrementando il timeout" ... Non completamente vero, perché l'ASP.net riscrive solo il ticket di autenticazione se è passato più della metà del valore di timeout. http://weblogs.asp.net/rajbk/archive/2004/10/11/241080.aspx – BrazenTongue

+0

@BrazenTongue - il link è morto a partire da febbraio 2017, sarebbe possibile fornire una sostituzione? – user3256944

Problemi correlati