我正在使用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还是在登录页面中输入凭据。
谢谢,
答案 0 :(得分:0)
我认为你很少有“InActive”用户。我只是将它们存储在Cache中并在每个请求中检查它。如果用户恰好是InActive,则将其注销。在内存中比依赖cookie信息更好。