在ASP.net MVC 5中拦截Cookie登录

时间:2014-02-21 15:10:34

标签: asp.net-mvc asp.net-mvc-5

我正在使用OWIN使用

配置我的MVC 5身份验证
public void ConfigureAuth(IAppBuilder app) {
    IAppBuilder.UseCookieAuthentication(AuthenticationType = 
        DefaultAuthenticationTypes.ApplicationCookie,
        LoginPath = new PathString("/Account/Login")
    });
}

...并使用

在用户上签名
var identity = await UserManager.CreateIdentityAsync(user, 
    DefaultAuthenticationTypes.ApplicationCookie);
AuthenticationManager.SignIn(new AuthenticationProperties() { 
    IsPersistent = isPersistent }, identity);

在我的User模型中,我有一个标记Inactive,当由管理员设置时应阻止用户登录。当用户登录而不要求记住时,这不是问题(没有设置cookie)因为我可以检索它们是否处于非活动状态并根据它进行操作。

问题是当他们登录并要求记住时(勾选“记住我”复选框)。下次他们浏览网站时,ASP.net会自动将其登录。我应该在哪里拦截此过程以检查用户是否处于非活动状态?

我在global.asax

中读到了Application_PostAuthenticateRequest
protected void Application_PostAuthenticateRequest(object sender, EventArgs e) {
    //do stuff with User.Identity here
}

但是这种方法似乎被调用了两次,有时是3次。此外,我希望能够查看身份验证是来自cookie还是在登录页面中输入凭据。

谢谢,

1 个答案:

答案 0 :(得分:0)

我认为你很少有“InActive”用户。我只是将它们存储在Cache中并在每个请求中检查它。如果用户恰好是InActive,则将其注销。在内存中比依赖cookie信息更好。