Нет ли способа расширить проверку подлинности с помощью ASP.Net Forms, чтобы сеансы могли проходить через iisreset? - PullRequest
4 голосов
/ 05 февраля 2010

Я только что пинговал другой пост, потому что мое приложение не позволяет пользователю войти в систему после iisreset.

Как устранить исключение AntiForgeryToken, которое возникает после iisreset в моем приложении ASP.Net MVC?

Я должен сказать, что согласен с комментатором, что это искусственное ограничение.

Из того, что я читал об Аутентификации с помощью форм, видно, что информация о сеансе, вошедшем в систему, хранится в памяти, и при перезапуске сервера эта информация теряется.

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

Я понимаю, что это «бесплатная» часть комплекта, которую они нам дают, но я бы предпочел не катать свой собственный, потому что они многое сделали правильно и у меня есть потенциал, чтобы испортить свое собственное решение.

Изменить: Обратите внимание, что это не имеет никакого отношения к состоянию сеанса. Насколько я знаю, я вообще не использую состояние сеанса, если только что-то под моей структурой не использует его внутренне.

Я понимаю, что файлы cookie используются для аутентификации, но срок их действия не истек. Я все еще получаю отскочил на страницу входа после iisreset.

Ответы [ 2 ]

7 голосов
/ 05 февраля 2010

Похоже, ваша проблема здесь в том, что атрибуты <machineKey /> validationKey и decryptionKey установлены на AutoGenerate, что означает, что они изменяются при сбросе IIS.

Это означает, что файлы cookie проверки подлинности с зашифрованными постоянными формами больше не будут действительными при следующем их представлении.

Это можно исправить, вручную настроив фиксированные validationKey и decryptionKey. Для этого взгляните на эту статью:

Как: настроить MachineKey в ASP.NET 2.0

Прокрутите вниз до раздела " Замечания по развертыванию веб-фермы " и сгенерируйте криптографически случайные ключи.

4 голосов
/ 05 февраля 2010

Сеанс аутентификации и «Состояние сеанса» (где отслеживаются токены защиты от подделки) - это две совершенно разные вещи в ASP.NET.

Аутентификация отслеживается файлом cookie в браузере (обычно) и поэтому не будет зависеть при перезапуске iis.

Состояние сеанса по умолчанию хранится в памяти (где оно будет прервано при перезапуске), но может быть легко сохранено в SQL Server или выделенном процессе State Server (который перезапускает обе службы survice iis). ).

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