Как обновить дату последнего входа в систему, если установлено «Запомнить меня»? - PullRequest
4 голосов
/ 25 марта 2009

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

Используя аутентификацию по формам, как я могу гарантировать, что дата последнего входа в систему обновляется при каждом новом посещении сайта, а не только когда они физически входят в систему? Есть ли какое-нибудь событие, в которое я могу попасть, чтобы достичь этого?

Я не могу использовать состояние сеанса, так как оно полностью отключено на разрабатываемом веб-сайте (модуль сеанса удален).

Спасибо

Ответы [ 2 ]

2 голосов
/ 25 марта 2009

Я предполагаю, что вы используете куки (я не вижу, как иначе "Запомнить меня" будет работать).

Когда пользователь входит в систему, установите два куки, один постоянный (если установлен флажок Запомнить меня) и один временный (только для этого сеанса). Второе - это то, что вы используете для авторизации пользователя.

Итак, на странице, где пользователь должен войти в систему, ищите cookie сессии. Если найдено, продолжайте как обычно. Если файл не найден, найдите постоянный файл cookie, если он найден, найдите пользователя, установите дату входа в систему и установите файл cookie сеанса. (Если постоянный файл cookie не найден, он просто не залогинен).

0 голосов
/ 25 марта 2009

Предполагается, что вы говорите о ASP.NET 2.0 (с учетом комментария поставщика членства).

Везде, где вы проверяете куки-файл, чтобы увидеть, должен ли пользователь быть автоматически авторизован, вы должны вызывать функцию GetUser провайдера членства, которая принимает логическое значение для обновления даты активности пользователя.

По Документам MSDN :

MembershipProvider.GetUser Method

Принимает в качестве входных данных уникальный идентификатор пользователя и логическое значение, указывающее, обновлять ли значение LastActivityDate для пользователя, чтобы показать, что пользователь в данный момент находится в сети. Метод GetUser возвращает объект MembershipUser, заполненный текущими значениями из источника данных для указанного пользователя. Если имя пользователя не найдено в источнике данных, метод GetUser возвращает значение NULL (ничего в Visual Basic).

...