2011-10-29 14 views
10

Devo modificare userdata in un AuthCookie FormsAuthentication dell'utente attualmente connesso. Non vedo come scoprire se l'utente corrente ha scelto un cookie persistente ("Ricordami").Verificare se l'utente attualmente connesso ha authcookie persistente

//user is already logged in... 

HttpCookie authCookie = FormsAuthentication.GetAuthCookie(username, ispersistant); //how to I determine 'ispersistant'? 

FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value); 

FormsAuthenticationTicket newTicket = new FormsAuthenticationTicket(ticket.Version, ticket.Name, ticket.IssueDate, ticket.Expiration, ticket.IsPersistent, NEWuserdata); 

authCookie.Value = FormsAuthentication.Encrypt(newTicket); 

HttpContext.Current.Response.SetCookie(authCookie); 

Qualcuno ha qualche idea? Grazie

risposta

7

Il metodo FormsAuthentication.GetAuthCookie crea solo un nuovo cookie. Non ti dà il cookie fatto in precedenza.

Sulla tua pagina di login probabilmente hanno qualcosa di simile:

FormsAuthentication.GetAuthCookie (userID, chkPersistCookie.Checked) 

E per sapere quando l'utente è autenticato si può fare

this.Context.User.Identity.IsAuthenticated 

Io in realtà non so per certo se si può dedurre il fatto che l'utente abbia un cookie di autenticazione persistente. Una cosa è controllare il cookie per una data di scadenza.

In questo question c'è un esempio per la lettura del cookie di autenticazione.

2

Ho finito per memorizzare "ispersistant" nella proprietà userdata dell'authorcookie all'accesso.

6

Ciò dovrebbe recuperare il cookie di autenticazione dei moduli esistente, esaminare il ticket e indicare se è persistente.

 var FormsAuthCookie = Response.Cookies[FormsAuthentication.FormsCookieName]; 
     var ExistingTicket = FormsAuthentication.Decrypt(FormsAuthCookie.Value); 
     bool IsPersistent = ExistingTicket.IsPersistent; 
Problemi correlati