如何在其他用户更改其用户名时强制注销用户?

emr*_*azi 13 c# asp.net-mvc forms-authentication

在我的应用程序中,我使用Forms-Authentication登录并注销用户.

一个功能是管理员可以更改其他用户的用户名.在这种情况下,我需要注销用户名已更改的用户.

如果我不这样做,由于之前设置了cookie,他们可以访问应用程序并收到错误消息(因为他们的用户名不存在,并且有些部分我使用他们的用户名来实现某些功能).

如何强制这些用户使用Forms-Authentication注销?

更新:

    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);

    }
Run Code Online (Sandbox Code Playgroud)

在我的客户全局过滤器中,我检查用户是否存在,如果不存在,我将其签出.但是,它不起作用.通过工作我的意思是他们通过身份验证并获得应用程序访问权限

提前致谢.

Dis*_*ame 9

以下是强制用户退出的操作:

public void UserPasswordChangedHandler()
{
  FormsAuthentication.SignOut();
  Roles.DeleteCookie();
  Session.Clear();
}
Run Code Online (Sandbox Code Playgroud)

我不认为需要逐行解释,其自我解释就足够了.如果我弄错了,请告诉我.

更新

对你的附加问题的简单回答是,如果管理员更新了他的数据,则保持每个用户的布尔跟踪,如果是 - 只需将他重定向到登录页面.

请参阅以下有关使用表单身份验证信息强制注销的文章:

更新2

清除cookie

希望这对你有所帮助.

  • 我认为这标志着用户登录.我想签出其他用户,其密码由管理员更改.好吧,我当然可以使用此代码签署该用户注销但我怎么理解,他们的密码被更改?换句话说,应该调用这个方法? (3认同)