none
Authentication Form no mantiene session de usuario RRS feed

  • Pregunta

  • Hola como estan, estoy usando Autenticación Form la cual funciona bien. Pero no me esta manteniendo las sessiones de los usuarios activas, enseguida que cierro el navegador, cuando lo abro  nuevamente ya perdio la session, este es mi metodo:

     void Login(string userName, bool isPersistent)
            {
                FormsAuthentication.RedirectFromLoginPage(userName, chkRecordar.Checked);
                string userData = SerializeUser(userName);
                userData = userName;
                FormsAuthenticationTicket ticket =
                    ticket = new FormsAuthenticationTicket(1, userName,
                                                           DateTime.Now, DateTime.Now.AddMonths(1),
                                                           isPersistent, userData,
                                                           FormsAuthentication.FormsCookiePath);
                string encryptedTicket = FormsAuthentication.Encrypt(ticket);
                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
                Response.Cookies.Add(authCookie);
            }

    Y mi web.config

    <authentication mode="Forms">
          <forms name="appNameAuth" path="/" loginUrl="Account/Login.aspx" defaultUrl="Home.aspx" protection="All" slidingExpiration="true" timeout="9999" />
            </authentication>

    Gracias de antemano

    viernes, 25 de enero de 2013 3:06

Respuestas

  • Hola como estan, estoy usando Autenticación Form la cual funciona bien. Pero no me esta manteniendo las sessiones de los usuarios activas, enseguida que cierro el navegador, cuando lo abro  nuevamente ya perdio la session, este es mi metodo:

     void Login(string userName, bool isPersistent)
            {
                FormsAuthentication.RedirectFromLoginPage(userName, chkRecordar.Checked);
                string userData = SerializeUser(userName);
                userData = userName;
                FormsAuthenticationTicket ticket =
                    ticket = new FormsAuthenticationTicket(1, userName,
                                                           DateTime.Now, DateTime.Now.AddMonths(1),
                                                           isPersistent, userData,
                                                           FormsAuthentication.FormsCookiePath);
                string encryptedTicket = FormsAuthentication.Encrypt(ticket);
                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
                Response.Cookies.Add(authCookie);
            }

    Y mi web.config

    <authentication mode="Forms">
          <forms name="appNameAuth" path="/" loginUrl="Account/Login.aspx" defaultUrl="Home.aspx" protection="All" slidingExpiration="true" timeout="9999" />
            </authentication>

    Gracias de antemano

    Listo, quedo asi...

    void Login(string userName, bool isPersistent)
            {
                FormsAuthenticationTicket tkt = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(1), isPersistent, userName);
                string cookiestr = FormsAuthentication.Encrypt(tkt);
                HttpCookie ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
                if (isPersistent)
                    ck.Expires = tkt.Expiration;
                ck.Path = FormsAuthentication.FormsCookiePath;
                HttpContext.Current.Response.Cookies.Add(ck);
                FormsAuthentication.RedirectFromLoginPage(userName, isPersistent);     
            }

    Faltaba esto...

    if (isPersistent)
                    ck.Expires = tkt.Expiration;

    Tambien modique mi web.config

    <authentication mode="Forms">
          <forms name="appNameAuth" path="/" loginUrl="url" defaultUrl="url" protection="All" slidingExpiration="false" /> <!--timout="99999"-->
        </authentication>

    • Marcado como respuesta AdyIr viernes, 25 de enero de 2013 15:52
    • Editado AdyIr viernes, 25 de enero de 2013 15:55
    viernes, 25 de enero de 2013 15:52

Todas las respuestas

  • Es correcto.  Una ventana de exploración nueva es efectivamente una sesión nueva.  El comportamiento que usted describe es el correcto y esperado.

    Jose R. MCP
    Code Samples

    viernes, 25 de enero de 2013 3:44
    Moderador
  • Pero no me esta manteniendo las sessiones de los usuarios activas,

    en al variable isPersistent que pones ?

    porque sino entendi mal quieres persitir la autenticacion en el ticket

    FormsAuthenticationTicket.IsPersistent Property

    tambien valida que las fechas de expiracion no sean tan cortas para que se mantenga la cookie de autenticaicon y asi depsues de autenticar se mantiene y aunque cierres el browser al volver a ingrresar se mantenga la autenticacion

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 25 de enero de 2013 3:57
  • Hola como estan, estoy usando Autenticación Form la cual funciona bien. Pero no me esta manteniendo las sessiones de los usuarios activas, enseguida que cierro el navegador, cuando lo abro  nuevamente ya perdio la session, este es mi metodo:

     void Login(string userName, bool isPersistent)
            {
                FormsAuthentication.RedirectFromLoginPage(userName, chkRecordar.Checked);
                string userData = SerializeUser(userName);
                userData = userName;
                FormsAuthenticationTicket ticket =
                    ticket = new FormsAuthenticationTicket(1, userName,
                                                           DateTime.Now, DateTime.Now.AddMonths(1),
                                                           isPersistent, userData,
                                                           FormsAuthentication.FormsCookiePath);
                string encryptedTicket = FormsAuthentication.Encrypt(ticket);
                HttpCookie authCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
                Response.Cookies.Add(authCookie);
            }

    Y mi web.config

    <authentication mode="Forms">
          <forms name="appNameAuth" path="/" loginUrl="Account/Login.aspx" defaultUrl="Home.aspx" protection="All" slidingExpiration="true" timeout="9999" />
            </authentication>

    Gracias de antemano

    Listo, quedo asi...

    void Login(string userName, bool isPersistent)
            {
                FormsAuthenticationTicket tkt = new FormsAuthenticationTicket(1, userName, DateTime.Now, DateTime.Now.AddMinutes(1), isPersistent, userName);
                string cookiestr = FormsAuthentication.Encrypt(tkt);
                HttpCookie ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
                if (isPersistent)
                    ck.Expires = tkt.Expiration;
                ck.Path = FormsAuthentication.FormsCookiePath;
                HttpContext.Current.Response.Cookies.Add(ck);
                FormsAuthentication.RedirectFromLoginPage(userName, isPersistent);     
            }

    Faltaba esto...

    if (isPersistent)
                    ck.Expires = tkt.Expiration;

    Tambien modique mi web.config

    <authentication mode="Forms">
          <forms name="appNameAuth" path="/" loginUrl="url" defaultUrl="url" protection="All" slidingExpiration="false" /> <!--timout="99999"-->
        </authentication>

    • Marcado como respuesta AdyIr viernes, 25 de enero de 2013 15:52
    • Editado AdyIr viernes, 25 de enero de 2013 15:55
    viernes, 25 de enero de 2013 15:52