拦截ASP.NET应用程序中的ajax调用,并在特定条件下注销用户

时间:2016-10-11 16:08:24

标签: c# asp.net ajax asp.net-mvc

我有一个使用身份和实体的ASP.NET MVC应用程序。 管理员可以启用/禁用用户。我想要实现的是,如果用户已经连接到应用程序并且管理员禁用了他/她(通过在该用户记录中设置标志(disabled = true)),那么该用户应该被注销。 我不是在寻找管理员自己记录用户,而是在下一次ajax调用时在用户端完成。 我已经尝试使用global.asax.cs文件(protected void Application_AuthenticateRequest(object sender, EventArgs e))中提供的事件,但是在控制器上调用了注销:

 Session.Abandon();
 Session.RemoveAll();
 AuthenticationManager.SignOut();

导致一个异常,说Session是空的。

有人可以帮我这个吗?

1 个答案:

答案 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
}