Como forçar o usuário de logout quando seu nome de usuário é alterado por outro usuário?
No meu aplicativo, estou usando a autenticação de formulários para entrar e sair de usuários.
Uma funcionalidade é admin pode alterar o nome de usuário de outros usuários. Nesse caso, preciso desconectar o usuário cujo nome de usuário é alterado.
Se não o fizer, devido aos seus cookies definidos antes, eles obtêm acesso ao aplicativo e recebem mensagens de erro (já que seu nome de usuário não existe e há partes em que eu uso seu nome de usuário para alguma funcionalidade).
Como posso forçar esses usuários a fazer logout usando a Autenticação por Formulários?
ATUALIZAÇÃO:
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);
}
No meu filtro global de clientes, eu verifico se o usuário existe ou não, se não eu os cancelo. No entanto, não está funcionando. Ao trabalhar, quero dizer que eles passam a autenticação e ganham acesso ao aplicativo.
Desde já, obrigado.