none
Tiempo de expiración sesión en asp.net RRS feed

  • Pregunta

  • Hola a todos.

    Tengo una aplicación en asp.net montada en IIS de windows 7 en una intranet local con autenticación a nivel de formularios con timeout de 480 minutos. el tema esta que la aplicación solicita inicio de sesión por caducación de la cookie antes de 480 minutos, he calculado antes de una hora. esto incomoda a los usuarios ya que constantemente tiene que estar ingresando su usuario y contraseña. Hay alguna forma que se autentifique a nivel de formulario pero que la sesión siempre este activa hasta que el usuario cierre sesión? o sea que no caduque las cookie. 

    O que estoy haciendo algo mal? mi archivo webconfig tiene la siguiente configuración.

     <authentication mode="Forms">
              <forms path="/" loginUrl="login.aspx" name="SqlAuthCookie" timeout="480"/>
        </authentication>-->

          <authentication mode="Forms">
            <forms path="/" loginUrl="login.aspx"/>
          </authentication>
          
            <authorization>
                <deny users="?"/>
                <allow users="*"/>
            </authorization>
         
        <sessionState cookieless="true"
          regenerateExpiredSessionId="true" />

    jueves, 21 de febrero de 2019 13:31

Respuestas

  • No, lo estás haciendo de la primera forma no de la segunda. El FormaAuthentication.RedirectFromLoginPage usa el mecanismo standard de Membership y no requiere para nada el Session.

    En consecuencia, te debería estar funcionando correctamente el timeout="120" que tienes puesto. La sesión solo debería caducar tras 2 horas de inactividad del usuario.

    ¿Puede ser que te caduque la sesión porque ninguno de los usuarios tenga actividad durante un periodo de 20 minutos? Si esta inactividad ocurriese, se descargaría el Pool y se perderían todas las sesiones. Puedes aumentar este timeout desde las propiedades avanzadas del Pool:

    IIS Manager Pool Advanced Properties

    • Propuesto como respuesta Sergio ParraModerator jueves, 21 de febrero de 2019 21:47
    • Marcado como respuesta Nortino viernes, 22 de febrero de 2019 16:51
    jueves, 21 de febrero de 2019 21:22
  • Estan en el IIS Manager. Selecciona el Pool que corresponda a tu aplicacion, y luego "propiedades avanzadas".
    • Propuesto como respuesta Pedro AlfaroModerator viernes, 22 de febrero de 2019 16:24
    • Marcado como respuesta Nortino viernes, 22 de febrero de 2019 16:51
    viernes, 22 de febrero de 2019 13:50

Todas las respuestas

  • Rectifico configuración de archivo web.config

      <authentication mode="Forms">
            <forms path="/" loginUrl="login.aspx" protection="All" timeout="120"/>
          </authentication>
          
            <authorization>
                <deny users="?"/>
                <allow users="*"/>
            </authorization>

    jueves, 21 de febrero de 2019 13:39
  • Una cuestión: ¿Cómo arrastras durante la navegación el hecho de que el usuario ha realizado el login? ¿Usas los automatismos de Membership en la manera standard? ¿O arrastras algo dentro del objeto Session y lo compruebas manualmente?

    Si es el segundo caso, entonces debes de tener presente que la sesión del objeto Session tiene otro timeout distinto de la sesión de Login. Y en tu web.config solo has modificado el segundo timeout pero no el primero, que de forma predeterminada es de 20 minutos. Si este es tu caso, añade en el web.config <sessionState timeout="120" />.

    jueves, 21 de febrero de 2019 15:17
  • Lo realizó de la segunda forma con un formulario login.aspx, en el cual valido el usuario y contraseña contra la base de datos, si lo datos son validos lo redirijo a la página solicitada según el siguiente código.

    Protected Sub bto_aceptar_Click(sender As Object, e As EventArgs) Handles bto_aceptar.Click
            If IsValid Then
                Select Case ValidarSesion(txt_Usuario.Text, txt_Contraseña.Text)
                    Case 0
                        lbl_msg_sesion.Visible = True
                        lbl_msg_sesion.Text = "(*) El nombre de usuario no existe"
                    Case 1
                        lbl_msg_sesion.Visible = True
                        lbl_msg_sesion.Text = "(*) La Contraseña no es valida"
                    Case 2
                        'Datos de usuario valido
                        Retorna_Datos_Usuarios()
                        FormsAuthentication.RedirectFromLoginPage(txt_Usuario.Text, False)

                    Case 3
                        lbl_msg_sesion.Visible = True
                        lbl_msg_sesion.Text = "(*)El nombre de usuario no esta vigente"

                End Select
            End If
        End Sub



    jueves, 21 de febrero de 2019 17:40
  • No, lo estás haciendo de la primera forma no de la segunda. El FormaAuthentication.RedirectFromLoginPage usa el mecanismo standard de Membership y no requiere para nada el Session.

    En consecuencia, te debería estar funcionando correctamente el timeout="120" que tienes puesto. La sesión solo debería caducar tras 2 horas de inactividad del usuario.

    ¿Puede ser que te caduque la sesión porque ninguno de los usuarios tenga actividad durante un periodo de 20 minutos? Si esta inactividad ocurriese, se descargaría el Pool y se perderían todas las sesiones. Puedes aumentar este timeout desde las propiedades avanzadas del Pool:

    IIS Manager Pool Advanced Properties

    • Propuesto como respuesta Sergio ParraModerator jueves, 21 de febrero de 2019 21:47
    • Marcado como respuesta Nortino viernes, 22 de febrero de 2019 16:51
    jueves, 21 de febrero de 2019 21:22
  • Estimado.

    Y donde encuentra esas propiedades? en que aplicación. Si me podrías indicar te lo agradecería bastante

    Gracias

    viernes, 22 de febrero de 2019 13:08
  • Estan en el IIS Manager. Selecciona el Pool que corresponda a tu aplicacion, y luego "propiedades avanzadas".
    • Propuesto como respuesta Pedro AlfaroModerator viernes, 22 de febrero de 2019 16:24
    • Marcado como respuesta Nortino viernes, 22 de febrero de 2019 16:51
    viernes, 22 de febrero de 2019 13:50

  • Efectivamente estaba en 20 minutos, le aumente el tiempo y la sesión no caduca a los 20 minutos.

    Gracias!

    viernes, 22 de febrero de 2019 16:52