Смешивание переменных сеанса в ASP.NET?

Возможно ли для ASP.NET перепутать, какой пользователь связан с какой переменной сеанса на сервере? Неизменно ли привязаны переменные сеанса к исходному пользователю, создавшему их, во времени, пространстве и измерении?

У меня есть сеанс, на котором они фактически смешиваются. stackoverflow.com/questions/1646274/…

Josh Stodola 30.10.2009 00:14
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
1
3 047
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

пока все возможно. . . .

Нет, если вы не сохраняете состояние сеанса на сервере sql или каком-либо другом вне хранилища процессов, а затем возитесь с ним. . .

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

Какое поведение вы наблюдаете? И уверены ли вы, что в переменных, о которых вы говорите, нет статики?

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

Это невозможно. Сеансы привязаны к создателю.

Вы хотите перепутать, или у вас есть случай, когда все выглядит перепутанным?

Дополнительная информация:

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

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

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

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

Я предполагаю, что вы повторно используете статическое поле в классе для хранения строки подключения. Эти статические поля повторно используются в нескольких запросах IIS, поэтому вы, вероятно, когда-либо увидите только последнего вошедшего в систему пользователя в разделе «Последнее обновление до».

Кстати, если у вас нет ДЕЙСТВИТЕЛЬНО веской причины для этого, вам не следует подключаться к БД таким образом. Вы не позволяете себе использовать пул соединений, который может снизить производительность при высоких нагрузках.

Ответ принят как подходящий

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

Сказав все это, похоже, ваша проблема не в том, что значения сеанса смешиваются. Первое, на что я хотел бы обратить внимание, - это пул соединений. ADO объединяет соединения по умолчанию, но если вы запрашиваете соединение с именем пользователя / паролем, которого нет в пуле, он должен предоставить вам новое соединение. Подсказка, что в будущем может стать узким местом производительности, если ваш сайт очень большой. Прошло некоторое время с тех пор, как я работал с SQL Server, в Oracle есть вызов, который можно сделать для переключения личности пользователя. Я был бы удивлен, если бы в SQL Server не было эквивалента. Вы можете попробовать подключиться к своей БД с общим именем пользователя / паролем, а затем выполнить этот вызов переключения идентификации, прежде чем вы вернете соединение остальной части вашего кода.

Другие вопросы по теме