Detectar nueva session y obligar al usuario a logearse nuevamente

En una intranet desarrollada para una empresa donde trabajo se requeria que cuando el usuario cerrara su ventana actual de navegador, sin cerrar previamentre su sesion de usuario autenticado, el sistema deberia solicitarle los datos para la autenticacion, por razones de seguridad algunos gerentes cierran sus ventanas con sus credenciales pero algunas personas pueden sentarse en su maquina y seguir con las credenciales en el cache.
En este caso particular las sessiones las guardamos en un Servidor de Session.

La solucion mas rapida que encontre a este problema fue crear una clase que here de System.Web.UI.MasterPage con este codigo y luego que las demas MasterPages principales utilizadas en el sitio hereden (en este caso una sola)

Public Class YODAMasterBase
    Inherits System.Web.UI.MasterPage

    Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
        MyBase.OnInit(e)

        If (Context.Session IsNot Nothing) Then
            If (Session.IsNewSession) Then
                Dim cadenaCookieHeader As String = Request.Headers("Cookie")
                If (cadenaCookieHeader IsNot Nothing) Or (cadenaCookieHeader.IndexOf("ASP.NET_SessionId") >= 0) Then
                    FormsAuthentication.SignOut()
                    Response.Redirect("~/login.aspx?accion=demo")
                End If
            End If
        End If
    End Sub

End Class

Luego hay que heredar de estar MasterPage llamada YodaMasterPage las que necesitemos esta funcionalidad.

Partial Class EJEMPLODeMasterPage
    Inherits YodaMasterPage

Tambien podriamos preguntar si es .IsNewSession y el usuario esta autenticado .IsAuthenticated, que luego lo testeare y probare.

 

Enlaces

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *