2012-05-31 4 views
0

Я создаю веб-портал в ASP.NET MVC 3, который использует удаленный веб-сервис как единственный способ связи с базой данных. Веб-служба имеет требование всегда иметь имя пользователя/пароль, переданное в заголовке запроса, в противном случае оно отклоняет вызов.Пользовательское членство, которое использует веб-службу для аутентификации

Я переопределил членство в ASP.NET, чтобы мой метод ValidateUser отправил метод Login/Password в веб-службу Login и возвращает true/false, если аутентификация прошла успешно. Он отлично работает с AcountController, снабженным MVK 3 пустым интернет-шаблоном. Поскольку я должен передавать имя пользователя/пароль при каждом вызове веб-службы, я сохраняю их в сеансе.

Моя проблема:

Если закрыть браузер и открыть его ... Я по-прежнему вошли на сайт, но мои переменные сессии истек, поэтому ни один из моих запросов к веб-службе не принимаются, даже если я 'm все еще регистрируется с учетными данными.

Я ищу хорошее предложение, как синхронизировать пользователя, зарегистрированного в состоянии с состоянием сеанса. Либо сохранять их как постоянными до тех пор, пока не будет выходить из системы, либо заставить их обоих удалять при закрытии браузера.

Спасибо за все предложения :)

ответ

1

При входе пользователя с помощью AccountController, попробуйте установить куки аутентификации, как это:

FormsAuthentication.SetAuthCookie(model.UserName, false); 

Это должно сказать ASP.NET, чтобы удалить куки, когда окно браузера закрыто. Затем, когда пользователь открывает новый браузер, оба сеанса и файл cookie должны быть уничтожены.

0

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

Они разные.

Ваш постоянный билет или печенье? This MS KB объяснит ситуацию и сценарии более подробно, чем я бы здесь ...

Hth.

Смежные вопросы