En mi aplicación, estoy usando Forms-Authentication para iniciar sesión y cerrar sesión en los usuarios.¿Cómo forzar la salida del usuario cuando su nombre de usuario es cambiado por otro usuario?
Una de las funciones es que el administrador puede cambiar el nombre de usuario de otros usuarios. En ese caso, debo cerrar la sesión del usuario cuyo nombre de usuario ha cambiado.
Si no lo hago, debido a sus cookies establecidas anteriormente, obtienen acceso a la aplicación y reciben mensajes de error (ya que su nombre de usuario no existe y hay partes donde utilizo su nombre de usuario para algunas funcionalidades).
¿Cómo puedo forzar a estos usuarios a cerrar la sesión con la Autenticación de formularios?
ACTUALIZACIÓN:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
string controller = filterContext.RouteData.Values["controller"].ToString();
string action = filterContext.RouteData.Values["action"].ToString(); ;
// Below returns the previous username, which does not exist anymore in db.
string userName = HttpContext.Current.User.Identity.Name;
UnitOfWork unitOfWork = new UnitOfWork();
if (!unitOfWork.UserRepository.UserExists(userName))
{
FormsAuthentication.SignOut();
filterContext.HttpContext.Session.Clear();
filterContext.HttpContext.Session.Abandon();
// I am not using Roles.
}
unitOfWork.Dispose();
base.OnActionExecuting(filterContext);
}
En mi cliente filtro global, puedo comprobar si el usuario existe o no, si no me apunto a cabo. Sin embargo, no está funcionando. Al trabajar quiero decir que pasan la autenticación y obtienen acceso a la aplicación.
Gracias de antemano.
Creo que esto cierra la sesión del usuario. Quiero cerrar la sesión de otros usuarios, cuya contraseña ha cambiado por admin. Bueno, ciertamente puedo usar este código para firmar que el usuario cierre la sesión, pero ¿cómo puedo entender que se haya cambiado su contraseña? en otras palabras, ¿cuándo debería llamarse este método? –
Me alegro de que el código que proporcioné fuera de ayuda. Para responder a su pregunta adicional (cómo manejarla), consulte la actualización en mi respuesta. –
Gracias de nuevo. Uso su código en mi filtro personalizado ActionFilterAttribute. Allí, compruebo si el nombre de usuario existe o no, si no (esta condición se cumple cuando cambio mi nombre de usuario), firmo al usuario. Sin embargo, el problema persiste. Las cookies del usuario permanecen y él obtiene acceso a la aplicación. Algunas ideas ? Actualicé mi pregunta con un código de filtro. –