我使用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))
}
});
答案 0 :(得分:1)
很可能您缺少使用OWIN注册ApplicationUserManager
。您仍然需要让OWIN知道如何获取用户管理器,因为它使用它来为用户获取新的安全标记。
在你身上Startup.Auth.cs
确保你已注册:
app.CreatePerOwinContext(() => DependencyResolver.Current.GetService<ApplicationUserManager>());