FreeTime - Stefano Passatordi 's Blog


Libera la mente...ecco il Blog di Stefano Passatordi
Statistiche
  • Views Home Page: 136.084
  • Views Posts: 318.272
  • Views Gallerie: 503.939
  • 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
dicembre 2017
lmmgvsd
27282930123
45678910
11121314151617
18192021222324
25262728293031
1234567
Blogs Amici
    Links
      Copyright © 2002-2007 - Blogs 2.0
      dotNetHell.it | Home Page Blogs
      ASP.NET 2.0 Windows 2003