当他/她的用户名是由其他用户更改如何强制注销用户?(How to force logout user

2019-06-28 06:06发布

在我的应用我使用表单的身份验证登录和注销用户。

其中一个功能是admin可以更改其他用户的用户名。 在这种情况下,我需要先退出,其用户名更改的用户。

如果我不这样做,因为之前设置自己的饼干,他们访问应用程序和收到错误消息(因为他们的用户名不存在,有些情况下我用自己的用户名某些功能部件)。

我怎么能强制用户进行注销使用表单的身份验证?

更新:

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

    }

在我的客户全局过滤,我检查用户是否存在与否,如果不是我签出来。 但是,它不工作。 通过工作,我的意思是,他们通过认证并获得应用。

提前致谢。

Answer 1:

这里是你做强制用户退出了什么:

public void UserPasswordChangedHandler()
{
  FormsAuthentication.SignOut();
  Roles.DeleteCookie();
  Session.Clear();
}

我不认为需要通过逐行解释,它的自我解释不够。 请让我知道,如果我错了。

更新

简单的回答你的另一个问题是每个用户布尔跟踪,以保持如果他的数据是由admin,如果是更新 - 只是他重定向到登录页面。

请参阅使用窗体身份验证信息,强制退出以下文章:

  • 我怎么能强制用户注销
  • 我如何强制注销的所有用户的一个网站 ,
  • ASP.NET窗体身份验证强制退出
  • 如何注销多个MembershipUsers不属于当前用户

更新2

清除cookie

  • Howto:如何创建和使用ASP.NET MVC中删除饼干
  • 你怎么在ASP NET MVC 3和C#清除Cookies
  • 如何失效不好的身份验证cookie

希望这帮助你。



Answer 2:

当用户需要变得无效,你必须将他们的详细信息添加到某种内部静态列表。

然后在每一个页面请求(可能使用的Application_BeginRequest)看,目前用户在该列表中,如果是这样调用FormsAuthentication.SignOut有和 - 然后。

这似乎是一个黑客位的,但它是我能想到的,现在是最好的。

请注意,删除用户,在-缺席的会话状态完全是另一个问题。



文章来源: How to force logout user when his/her username is changed by another user?