Asp.net Identity注销其他用户

时间:2017-02-03 13:52:14

标签: asp.net authentication asp.net-identity identity claims-based-identity

我使用Asp.net身份对用户进行身份验证,并且我试图从管理员端锁定任何用户。但当我锁定任何在线用户时,它没有注销。我已经阅读了许多关于我的问题的评论,但他们都没有工作。我尝试了UserManager.UpdateSecurityStamp来注销用户,但它也没有用。 当我锁定用户时,如何立即注销用户?

public ActionResult LockUser(string userId)
        {
            _userManager.SetLockoutEnabled(userId, true);
            _userManager.SetLockoutEndDate(userId,DateTime.Today.AddYears(999));

            var user = _userManager.FindById(userId);
            _userManager.UpdateSecurityStamp(userId);

            return RedirectToAction("UserDetail",new { userId });
        }


app.UseCookieAuthentication(new CookieAuthenticationOptions
            {
                AuthenticationMode = AuthenticationMode.Active,
                AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
                LoginPath = new PathString("/UnAuthorize/Index"),
                Provider = new CookieAuthenticationProvider
                {

                    OnValidateIdentity = SecurityStampValidator.OnValidateIdentity<AppUserManager, User>(
                        validateInterval: TimeSpan.FromMinutes(1),
                        regenerateIdentity: (manager, user) => user.GenerateUserIdentityAsync(manager))
                }
            });

1 个答案:

答案 0 :(得分:1)

很可能您缺少使用OWIN注册ApplicationUserManager。您仍然需要让OWIN知道如何获取用户管理器,因为它使用它来为用户获取新的安全标记。

在你身上Startup.Auth.cs确保你已注册:

app.CreatePerOwinContext(() => DependencyResolver.Current.GetService<ApplicationUserManager>());