2014-02-21 2 views
0

Я использую Owin, чтобы сконфигурировать аутентификацию MVC 5 с помощьюIntercept Cookie Войти в ASP.net 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 модели I имеют флаг, Inactive, который, когда установлен администратором, должен помешать пользователю войти в систему. Это не проблема, когда пользователи вступают в систему, не спрашивая, чтобы их запомнили (без настройки файла cookie), поскольку я могу получить информацию о том, являются ли они неактивными или нет. действовать на основе этого.

Проблема заключается в том, что они заходят в систему и просят запомниться (отметьте флажок «Запомнить меня»). В следующий раз, когда они просматривают сайт, ASP.net автоматически регистрирует их. Где я должен перехватить эту процедуру, чтобы проверить, неактивен ли пользователь или нет?

Я читал о Application_PostAuthenticateRequest в global.asax

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

Но этот метод, кажется, вызывается дважды, иногда в 3 раза. Также я хочу узнать, была ли аутентификация получена из файла cookie или путем ввода учетных данных на странице входа.

Спасибо,

ответ

0

Я полагаю, у вас очень мало «неактивный» пользователей. Я бы просто сохранил их в кеше и проверял их по каждому запросу. Если пользователь оказывается InActive, то выйдите из системы. В памяти лучше, чем полагаться на информацию о файлах cookie.