FreeTime - Stefano Passatordi 's Blog


Libera la mente...ecco il Blog di Stefano Passatordi
Statistiche
  • Views Home Page: 135.363
  • Views Posts: 316.429
  • Views Gallerie: 490.892
  • n° Posts: 210
  • n° Commenti: 148
Archivio Posts
Anno 2010

Anno 2009

Anno 2008

Anno 2007

Anno 2006

Anno 2005
Mappa

Login Control e Remember Me!

Il Login Control è molto utile ed anche molto utilizzato ma...il Remember Me non funziona proprio in maniera "automatica".

Per rendere il coockie "eterno" non bisogna impostare il timeout del tag forms nel Web.config  a numeri altissimi e non serve neanche usare codice come questo :

FormsAuthentication.RedirectFromLoginPage(Username.Text, true);

o

FormsAuthentication.SetAuthCookie(Username.Text, true);

in entrambi i casi il coockie durerà al max il valore impostato in timeout, che di default è 30 minuti.

Se volessi un coockie che duri un anno???? Calcolo i minuti che ci sono in un anno e lo imposto nel timeout????....bhè provateci!

Ecco la soluzione :

            if (Membership.ValidateUser(Username.Text, Password.Text))
            {

                FormsAuthenticationTicket tkt;
                string cookiestr;
                HttpCookie ck;
                tkt = new FormsAuthenticationTicket(1, Username.Text, DateTime.Now, DateTime.Now.AddMonths(12), this.RememberMe.Checked, "user");
                cookiestr = FormsAuthentication.Encrypt(tkt);
                ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
                if (this.RememberMe.Checked)
                    ck.Expires = tkt.Expiration;
                ck.Path = FormsAuthentication.FormsCookiePath;
                Response.Cookies.Add(ck);

                string strRedirect;
                strRedirect = Request["ReturnUrl"];
                if (strRedirect == null)
                    strRedirect = "URL vostro";
                Response.Redirect(strRedirect);                   
            }
            else
            {
                //Fate voi!
            }

In poche parole prima bisogna creare un oggeto di tipo FormsAuthenticationTicket con le caratteristiche che ci interessano, come, ad esempio, expiration e dopo lo criptiamo e creiamo un nuovo coockie con la stringa criptata. A questo punto, se il RememberMe è a True, impostiamo la data di validità del coockie uguale a quella del ticket, altrimenti, il coockie scadrà al termine del timeout previsto. Come passo finale aggiungiamo all'oggetto Response il coockie creato ed effettuiamo il redirect in base alla richiesta!


Enjoy it! 
Categoria: Programmazione
sabato, 01 nov 2008 Ore. 20.31
Ora e Data
Calendario
ottobre 2017
lmmgvsd
2526272829301
2345678
9101112131415
16171819202122
23242526272829
303112345
Blogs Amici
    Links
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003