我使用的是asp.net MVC和ASP.net Identity 2.0。
在我的网站上,管理员可以选择禁止用户,我希望禁止用户自动从网站注销。
我知道我可以通过调用
来注销当前用户AuthenticationManager.SignOut();
但是可以注销其他用户吗?或者可能缩短他的会话时间还是什么?
我知道我可以对控制器进行全局过滤,禁止禁止用户访问,但是过滤器会针对每个用户运行,因此我对此解决方案不满意。
答案 0 :(得分:17)
如果您使用securitystampvalidator功能,当用户被禁止时,只需致电:UpdateSecurityStamp(userId)
,以便在下次检查时使任何现有的登录Cookie无效。
答案 1 :(得分:15)
您需要在Auth.Config.cs中配置Cookie失效:
public void ConfigureAuth(IAppBuilder app)
{
// important to register UserManager creation delegate. Won't work without it
app.CreatePerOwinContext(UserManager.Create);
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
Provider = new CookieAuthenticationProvider
{
OnValidateIdentity = SecurityStampValidator
.OnValidateIdentity<UserManager, ApplicationUser, int>(
validateInterval: TimeSpan.FromMinutes(10),
regenerateIdentityCallback: (manager, user) => user.GenerateUserIdentityAsync(manager))
},
// other configurations
});
// other stuff
}
然后更新安全标记,因为Hao Kung在用户被禁止时说。