2009-12-28 5 views
1

У нас есть частный сайт для клиентов. Клиенты часто говорят нам, что они видят профиль другого пользователя.Переключение сеанса ASP.NET

Наша процедура аутентификации выглядит так: учетные данные -> проверить таблицу DB -> UserId, сохраненную в сеансе.

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

+0

Как вы объясните, не должно быть возможным, чтобы пользователь получал сеансы друг друга. Но, возможно, вам следует опубликовать код. – driis

+0

Если бы вы могли опубликовать какой-то код, это могло бы помочь. – RickNZ

+0

Аналогичный вопрос здесь. Попробуйте предложенное решение. http://stackoverflow.com/questions/1646274/asp-net-session-mix-up-using-stateserver-scary – Pedro

ответ

2

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

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

Однако вы по-прежнему можете безопасно включить кеширование на стороне клиента на этих страницах (Location="Client").

+0

Извините, но я не могу найти способ отключить это кэширование вывода. Можете ли вы показать мне дверь? –

+0

У вас есть директива '<% @ OutputCache%>' в верхней части вашего * .aspx-файла? Или вы делаете какие-либо вызовы против объекта Response.Cache в коде для страницы или каких-либо элементов управления или основных страниц, которые он использует? – RickNZ

1

Похоже, что вы сохраняете данные профиля в статических переменных. Кроме того, вы никогда не должны реализовывать свой собственный механизм аутентификации, но основывайте его на встроенной аутентификации форм asp.net. Существует уже встроенная поддержка для sql server based authentication.

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