ASP MVC 2: как сбросить авторизацию пользователя? - PullRequest
0 голосов
/ 08 июля 2011

Мне нужна глобальная переменная Binary (Linq.Binary) (ссылка на пользователя), доступная для всех контроллеров, которая заполняется в процессе авторизации. Я решил использовать TempData . (Может быть, есть более подходящий способ?). Мне не нужна система членства MVC, только одна переменная.

Когда я закрываю веб-сайт, а затем снова захожу на него, мои TempData пустые, и мне нужно снова запустить авторизацию для пользователя. Как это сделать?

  • [Авторизовать] не работает - пользователь уже авторизован.
  • Я пытался вставить этот код в критические контроллеры:

если (! TempData.ContainsKey ( "CustomerRef")) FormsAuthentication.RedirectToLoginPage ();

но ничего не происходит.

  • Я пытался перегрузить AuthoriseAttribute , но выглядит невозможным поиск в TempData в AuthoriseAttribute class.
  • Я не могу сохранить эту переменную в файлах cookie - это важно.
  • Я не хочу хранить его где-нибудь в базе данных.

Лучший способ для меня - сбросить авторизацию пользователя, если TempData пуст, но я не знаю, как это сделать. Или, может быть, я заново изобретаю колесо? :)

P.S .: Я использую TempData.Peek () при получении данных, поэтому переменная не мигает.

1 Ответ

0 голосов
/ 08 июля 2011

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

У меня была похожая ситуация, я сделал следующее:

  • Создайте статический класс сstatic Dictionary<String,someClassWithExtraValues>
  • Во время аутентификации я добавил бы новое значение в словарь с ключом User.Identity.Name.Таким образом, я всегда мог достичь значений для зарегистрированных пользователей.
  • Когда пользователь выходит из системы, я удаляю его значение.

Вы можете использовать его в файлах cookie, даже если это важно, после того как cookie FormsAuthentication вручную изменен, он становится недействительным.Ofc все еще есть кража печенья и т. Д.

...