Каков наилучший способ хранения информации о пользователе входа в систему для веб-приложения? - PullRequest
2 голосов
/ 27 марта 2010

Я был однажды в проекте веб-приложения, разработанного на ASP.NET. Для каждого пользователя входа в систему существует объект (назовем его UserSessionObject ), созданный и сохраненный в ОЗУ. Для каждого HTTP-запроса данного пользователя соответствующий экземпляр UserSessoinObject используется для просмотра информации о состоянии пользователя и подключения к базе данных. Итак, этот UserSessionObject очень важен.

Этот дизайн приносит несколько проблем, обнаруженных позже:

1) Поскольку этот UserSessionObject кэшируется в пространстве памяти ASP.NET, нам необходимо настроить балансировщик нагрузки на липкое соединение . То есть HTTP-запрос в одном сеансе всегда будет отправляться на один веб-сервер позади. Это ограничение масштабируемости и ремонтопригодности.

2) Этот UserSessionObject доступен в каждом HTTP-запросе. Для обеспечения согласованности предусмотрена эксклюзивная блокировка для UserSessionObject . Только один HTTP-запрос может быть обработан в любой момент времени, потому что он должен сначала получить блокировку. Это влияет на производительность и время отклика.

Теперь мне интересно, есть ли лучший дизайн для такого случая входа в систему. Кажется, помогает Sharing-Nothing-Architecture. Это означает, что длинная пользовательская информация извлекается из базы данных каждый раз. Боюсь, это повредит производительности.

Есть ли шаблон дизайна для длинного пользовательского веб-приложения? Спасибо.

Ответы [ 2 ]

2 голосов
/ 27 марта 2010

Сохранить состояние сеанса в базе данных и поместить memcached перед ним.

1 голос
/ 27 марта 2010

Одним из методов, обсуждаемых в StackOverflow и в других местах, является подписанный файл cookie. Файл cookie, содержащий информацию, которой вы в противном случае не смогли бы доверять, а также хеш, созданный таким образом, чтобы его мог создать только ваш сервер, так что вы знаете, что информация действительна. Это масштабируемый способ сохранения информации с низким уровнем безопасности, такой как имя пользователя. Вам не нужно обращаться к какому-либо общему ресурсу, чтобы подтвердить, что пользователь вошел в систему, если подписанный файл cookie соответствует всем критериям (необходимо иметь штамп с датой, чтобы предотвратить кражу файлов cookie в течение длительного времени, и вам следует также следите за тем, чтобы пользователь не проходил аутентификацию, поэтому у него не должно быть доступа к более защищенной информации, не пройдя обычный процесс входа в систему).

StackOverflow: Советы по подписанным файлам cookie вместо сеансов

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