Сохранить sessionId, даже если вы не используете сеанс для хранения данных? - PullRequest
0 голосов
/ 01 февраля 2011

Привет

Я строю веб-сайт ASP.NET MVC 2 и мне нужно привязать текущего пользователя / сеанс к некоторым данным. Ниже приведены возможные решения, но какова лучшая практика?

  1. Создайте GUID и установите его в качестве скрытого поля при просмотре, затем данные будут сохранены в отдельном объекте (например, в кеше). однако безопасность будет не самой лучшей (пользователь может изменить значение скрытого поля).
  2. Использовать Session.SessionId. поддерживать одинаковый SessionId между вызовами, мне нужно что-то хранить в сеансе, который кажется неправильным? Я не уверен, есть ли здесь проблемы с безопасностью?

BestRegards

Мое решение: В итоге я создал GUID для текущего клиента, а затем установил его как скрытое поле в форме. Однако у меня были некоторые проблемы, чтобы правильно отобразить скрытое поле, см .: ASP.NET MVC 2 HiddenField пусто?

1 Ответ

2 голосов
/ 01 февраля 2011

Поддержание состояния через веб-запросы всегда является проблемой, так как сеть по своей сути не имеет состояния.

Независимо от того, используете ли вы скрытый Guid (или другой уникальный системный идентификатор) или идентификатор сеанса в cookie, оба они открыты для злоупотреблений. Тем не менее, большинство систем, которые реализуют «состояние сеанса», делают это с помощью файлов cookie.

Цель состояния сеанса «bag» - хранить информацию между веб-запросами, в точности ту цель, о которой вы упомянули, поэтому, хотя она может показаться «неправильной», это очень распространенный подход. Помните, что в браузере клиента хранится только идентификатор сеанса, а не фактические данные сеанса; это хранится на сервере.

...