Получить последнее действие после тайм-аута в ASP.NET WebForms - PullRequest
0 голосов
/ 20 сентября 2010

У меня есть страница ASP.NET WebForms с аутентификацией форм. Когда пользователи создают логин, я использую «запомнить меня» для создания куки аутентификации.

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

Похоже, что единственный способ сделать это - подключиться к событию приложения Application_AuthenticateRequest - верно? Или есть какой-нибудь лучший способ сделать это?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 21 сентября 2010

Вместо этого я использовал событие session_start в Global.asax.

Там я сохранил текущее и предыдущее начало сеанса DateTime для пользователя в БД (каждый раз перемещая текущий к предыдущему).Это дает мне время предыдущего сеанса пользователя.

Возможно, было бы лучше использовать session_end - но это не время, когда пользователь покинул страницу, это время [тайм-аута] после их последнего действия - так что этодовольно хорошее решение.

0 голосов
/ 20 сентября 2010

Да, вы захотите подключить событие FormsAuthenticationModule.Authenticate.Вы можете сделать это, добавив модуль в ваше веб-приложение.См. Следующий пример кода модуля.

 public class BasicAuthenticateModule : IHttpModule
  {
    public BasicAuthenticateModule()
    {
    }

    public void Dispose()
    {
    }

    public void Init(HttpApplication context)
    {
      foreach (string name in context.Modules.Keys)
      {
        if (name == ApplicaionModules.FormsAuthentication)
        {
          FormsAuthenticationModule module = (FormsAuthenticationModule)context.Modules[name];
          module.Authenticate += new FormsAuthenticationEventHandler(module_Authenticate);
          break;
        }
      }
    }

    private void module_Authenticate(object sender, FormsAuthenticationEventArgs e)
    {

    }
  }

Наслаждайтесь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...