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
Comparte este post: