No hay manera de abandonar una sesión de 'fuera' de la sesión. Debería verificar la base de datos en cada carga de página, y si la cuenta se ha deshabilitado, entonces cierre la sesión. Podrías lograr esto usando un HttpModule también, lo que haría las cosas un poco más limpias.
Por ejemplo:
public class UserCheckModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.PreRequestHandlerExecute += new EventHandler(OnPreRequestHandlerExecute);
}
public void Dispose() {}
private void OnPreRequestHandlerExecute(object sender, EventArgs e)
{
// Get the user (though the method below is probably incorrect)
// The basic idea is to get the user record using a user key
// stored in the session (such as the user id).
MembershipUser user = Membership.GetUser(Guid.Parse(HttpContext.Current.Session["guid"]));
// Ensure user is valid
if (!user.IsApproved)
{
HttpContext.Current.Session.Abandon();
FormsAuthentication.SignOut();
HttpContext.Current.Response.Redirect("~/Login.aspx?AccountDisabled");
}
}
}
Esto no es un ejemplo completo, y el método de recuperación del usuario utilizando una clave almacenada en la sesión tendrá que ser adaptado, pero esto debe empezar. Implicará una verificación adicional de la base de datos en cada carga de página para verificar que la cuenta de usuario todavía esté activa, pero no hay otra forma de verificar esta información.
¿No es solo para la sesión del usuario actual? Quiero abandonar la sesión de otro usuario ... Algo así como Sesión (usuario) .Abandonar. – Testing123
@ Testing123 egrunin significa que cada usuario estaría revisando para ver si su propia cuenta no es válida, si es así, entonces la aplicación eliminaría su cookie. – guanome
Voto descendente porque necesita FormsAuthentication.SignOut(); – Juan