2010-09-16 5 views
5

Я работаю над веб-проектом с использованием Asp.Net MVC, который мне придется развернуть в среде фермы.Создайте масштабируемый веб-сайт ASP.Net MVC без использования сеанса

Я прочитал много статей, и я думаю, что полностью отключил SessionState, я думаю, что это сделает более надежное приложение и избавит меня от нескольких головных болей (все, что я прочитал, говорит мне, что обработка сеансов на ферме не является тривиальной).

Есть некоторые вещи, которые я до сих пор не полностью понял с помощью этого подхода, хотя основной из них - процесс аутентификации/авторизации. В основном я не уверен, как (если?) Я могу обрабатывать сеансы пользователя, если на сервере нет SessionState. Если пользователь регистрируется на веб-сайте и затем пытается получить доступ к другой странице, как я могу узнать, что пользователь уже вошел в систему? Я знаю, что использование файлов cookie небезопасно, я думал о сочетании файлов cookie с идентификатором сеанса, хранящимся в БД, но я полагаю, что если я отключу SessionState, я также не буду иметь доступ к идентификатору сеанса.

Какой лучший подход к этому? Есть ли рекомендованная книга/статья, на которую вы можете указать мне, чтобы я мог понять это?

Большое спасибо за вашу помощь

+3

Использование файлов cookie через SSL не обязательно небезопасно. Многие популярные веб-сайты работают именно так – sipwiz

ответ

6

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

http://msdn.microsoft.com/en-us/library/ff647070.aspx

http://msdn.microsoft.com/en-us/library/xdt4thhy.aspx

http://www.codeproject.com/KB/web-security/formsroleauth.aspx

http://www.beansoftware.com/ASP.NET-Tutorials/Forms-Authentication-Active-Directory.aspx

Эти ссылки ANS вашего каждого вопроса. Благодаря этому вы можете управлять авторизацией роли и сеансом

+0

Большое спасибо за все эти ссылки, они определенно ответили на большинство моих вопросов относительно аутентификации. – willvv

3

Возможно, что при наличии рабочих процессов, поддерживаемых вашим приложением, которые вы хотите сохранить при повторном использовании приложений (сбой кластерного узла), вы можете полностью игнорировать постоянные сложности сеанса ,

Рассмотрите пример проверки электронной торговли или аналогичный многоэтапный процесс, который требует много государственного управления до завершения. Предположение состоит в том, чтобы создать model вашего приложения таким образом, чтобы во время этих «шагов» прогресс работ был сохранен в хранилище данных изначально, хотя модель. То есть «workfolow» - это не какая-то внешность основной модели вашего приложения, и как таковая рассматривается как «временная» вещь, для которой требуется некоторый механизм сохранения, такой как сеанс aspnet, в отличие от обычного хранилища данных (базы данных) приложений, ,

Например, вместо сохранения дерева объектов проверки (списков элементов, заказов и т. Д.) В сеансе, сохраняйте его в самой базе данных. Таким образом, не только эта «частично завершенная проверка» выдержит отказ узла или повторное использование приложения, но, кроме того, если этот пользователь должен потушить срочный пожар на кухне или их Windows Update выйдет из строя на своем ПК, они могут возобновиться, когда они войдут в следующий , : D И: вы избегаете всего этого сложного распределенного управления сеансом. Юк!

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

Hanselman кластерных приложений MVC: http://www.hanselman.com/blog/LoadBalancingAndASPNET.aspx

+0

Спасибо за ваши комментарии, на самом деле мое приложение имеет несколько сценариев, которые потребуют частичных «процессов» для хранения, и это определенно то, что я должен буду учитывать при разработке этого. Теперь я уверен, что лучший способ - без состояния сеанса. Спасибо – willvv

2

FormsAuthentication и ASP.NET профиль работа без SessionState включены - они работают на печенье и доступе к БД по умолчанию.

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

Что может и будет нарушено без включения SessionState, это TempData MVC - это задерживает события в сеансе между страницами. Но, если вы просто не используете его, вы будете золотыми.

+0

Отлично, я не был уверен в том, как работает проверка подлинности форм, теперь у меня есть гораздо более ясная идея. Благодарю. – willvv

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

  • Нет связанных вопросов^_^