2010-07-19 2 views
2

Я пишу сайт asp.net mvc C#, который не будет использовать сеансы ... Каковы мои возможности для разделения функций входа без сеансов?asp.net mvc log in architecture options

+0

Почему вы не используете сеансы? Есть несколько, о которых я могу думать, и каждый из них слегка изменил бы то, как я бы ответил на этот вопрос. – Matt

+0

, вы также можете найти этот СОСТОЙНЫЙ вопрос полезным: http://stackoverflow.com/questions/356562/web-authentication-state-session-vs-cookie-vs – Matt

ответ

0

Общий подход заключается в использовании файлов cookie. См. Securing and ASP.NET MVC Application.

+0

Спасибо за это, посмотрим ... есть любые другие варианты? – Gary

1

System.Web.Security.FormsAuthentication использует куки-файлы:

FormsAuthentication.SetAuthCookie(userName, rememberMe); 

Нет сеанс не существует используется. Конечно, если вы хотите больше, чем имя пользователя и isAuthenticated, вам понадобится другой способ сохранить это состояние. Вашими реальными альтернативами являются файлы cookie или URL-адреса, ни один из которых не является общепринятым по другим причинам.

Сессия не является злом, особенно учитывая ваши варианты размещения данных сеанса на общем сервере или экземпляре SQL Server.

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

Если вы должны полностью отказаться от сеанса, вам придется либо воссоздать состояние при каждом вызове, либо дорогостоящее предложение, либо вам придется создать свой собственный механизм хранения состояний, который вернет нас к стандартному хранилищу сеансов ASP.NET альтернативы.

1

У вас в основном есть 3 варианта, которые я могу придумать, для аутентификации HTTP-запросов.

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

2) Sessions. Сессия будет обычно также использует файлы cookie (для хранения информации о сеансе), но не обязательно (см. http://msdn.microsoft.com/en-us/library/aa479314.aspx)

3) Аутентификация без гражданства. Это действительно используется только для не-браузерных HTTP-клиентов, вызывающих веб-службы. Это включает в себя клиент, который подписывает HTTP-запрос с помощью комбинации открытого/закрытого ключа, которую сервер может затем аутентифицировать. Примером протокола аутентификации без аутентификации является OAuth (хотя OAuth как спецификация действительно ориентирована на авторизацию, но авторизация по своей природе требует аутентификации).

См. Web authentication state - Session vs Cookie vs? для дополнительной информации о файлах cookie и сеансах.