Principales respuestas
Tiempo de expiración sesión en asp.net

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" />
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:
- 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
-
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
Todas las respuestas
-
-
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" />.
-
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
-
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:
- 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
-
-
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
-