Поставщик членства .Net, проверяет пользователя при входе через постоянный cookie - PullRequest
0 голосов
/ 29 июня 2010

Когда пользователь входит на мой веб-сайт, у меня есть пользовательский поставщик членства, который переопределяет ValidateUser и проверяет, что пользователь имеет достаточные права и т. Д.

Однако при реализации функции «запомнить меня» через аутентификацию форм по умолчанию с использованием RememberMeSet я также хочу проверить пользователя по первому запросу.

Есть ли какой-нибудь хук, который я могу прикрепить к этому триггеру, когда пользователь входит в систему со своим постоянным cookie?

Ответы [ 3 ]

2 голосов
/ 30 июня 2010

Все, что вам нужно сделать, это вызвать Membership.GetUser(), который возвращает MembershipUser экземпляр текущего пользователя, вошедшего в систему.Если ваш пользователь вошел в систему с «Запомнить меня» в последний раз, вызывая постоянную авторизацию.cookie на клиенте, ваш MembershipProvider автоматически сообщит вам, если пользователь вошел в систему [из постоянного cookie]. Никаких дополнительных усилий для аутентификации пользователя по постоянному файлу аутентификации не требуется.

Вы можете обработать дополнительный хук на MembershipUser экземпляре, возвращенном методом Membership.GetUser(), и проверитьон уполномочен выполнять задачу.Если пользователь не вошел в систему, метод просто вернет null.

0 голосов
/ 30 июня 2010

Временное решение:

  1. Иметь переменную сеанса, например UserIsVerified или что-то
  2. Установите эту переменную на true при входе через страницу входа по умолчанию (или через единый вход и т. Д.)
  3. Создайте метод Application_PreRequestHandlerExecute в global.asax, где вы проверяете, была ли установлена ​​опора UserIsVerified, а если нет: выполните соответствующие проверки

Почему Application_PreRequestHandlerExecute?

В PreRequest доступны как сеанс, так и профиль. .Net уже интерпретировал постоянный файл cookie, и поэтому любая информация, которую вы можете получить, находится там. Вы также можете выполнить перенаправление, когда проверка пользователя завершится неудачно, так как мы находимся в цикле запросов. Это также происходит прямо перед выполнением любого пользовательского кода, поэтому на самом деле это вполне безопасно, чтобы предотвратить подобные действия.

Если в обработчике происходит сбой аутентификации, я перенаправляю на страницу выхода и позволяю .Net позаботиться обо всем остальном.

0 голосов
/ 29 июня 2010

Я думаю, что вы ищете событие AuthenticateRequest в HttpModule. в этом обработчике событий вы можете проверить cookie и проверить учетные данные, а затем настроить HttpContext.Current.User для авторизации пользователя.

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