Выйти из системы и с каждым обновлением, хотя не используя TempDataProvider? - PullRequest
1 голос
/ 05 января 2010

У меня есть приложение, созданное с использованием asp.net mvc и развернутое на 2 Amazon EC2 экземплярах. Я использую аутентификацию форм для аутентификации пользователей. Я просто быстро проверяю имя пользователя и пароль и, если я нашел совпадение, я устанавливаю cookie для аутентификации, например, так:

if(_repository.Login(username, password))
    FormsAuthentication.SetAuthCookie(username, false);

Это прекрасно работает, пока приложение на одной машине, но, как только я использовал Amazon Elastic Load Balancing для развертывания сайта на двух машинах, сайт ведет себя очень странным образом. Когда пользователь входит в систему, сайт распознает вошедшего в систему пользователя, после одного или двух обновлений сайт больше не видит пользователя как вошедшего в систему пользователя. Если пользователь продолжает обновляться в течение некоторого времени, приложение снова видит его как зарегистрированного пользователя, и это продолжается вечно.
Я знаю, что такая проблема может возникнуть, если я храню SessionState inproc. Я вообще не использую SessionState .

Что мне здесь не хватает, ребята?

Ps : я отредактировал состояние сеанса, чтобы сохранить его на сервере состояний [хотя я нигде не использую ни сеансы, ни TempData в моем приложении], и такое же странное поведение присутствует. 1016 *

1 Ответ

2 голосов
/ 05 января 2010

Вам необходимо синхронизировать <machinekey> между всеми серверами в вашей ферме. В противном случае билет проверки подлинности форм подходит только для компьютера, который его выдал. Я сомневаюсь, что это как-то связано с Session / TempData.

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