我有一个使用身份和实体的ASP.NET MVC应用程序。
管理员可以启用/禁用用户。我想要实现的是,如果用户已经连接到应用程序并且管理员禁用了他/她(通过在该用户记录中设置标志(disabled = true)),那么该用户应该被注销。
我不是在寻找管理员自己记录用户,而是在下一次ajax调用时在用户端完成。
我已经尝试使用global.asax.cs文件(protected void Application_AuthenticateRequest(object sender, EventArgs e)
)中提供的事件,但是在控制器上调用了注销:
Session.Abandon();
Session.RemoveAll();
AuthenticationManager.SignOut();
导致一个异常,说Session是空的。
有人可以帮我这个吗?
答案 0 :(得分:1)
如果您使用cookie身份验证,则可以使其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
}