ASP.Net Context.User.Identity странность - PullRequest
1 голос
/ 27 марта 2009

У меня есть приложение ASP.Net 3.0 с пакетом обновления 1 (SP1), которое использует проверку подлинности на основе форм.

Во время тестирования я заметил, что при просмотре страницы, которую просматривал другой пользователь, имя другого пользователя будет отображаться в элементе управления на моей главной странице. Context.User.Identity также для другого пользователя.

Если я переключаюсь на другую страницу, которую никто другой не просматривает Context.User. Идентичность верна.

Я в тупик и буду признателен за предложения.
Заранее спасибо.
Chris

Ответы [ 3 ]

3 голосов
/ 28 марта 2009

Может быть, потому что для страницы включено кэширование вывода: если страница кэшируется на стороне сервера с VaryByParam = нет, все пользователи получат одну и ту же копию из кэша.

Я могу думать только о двух вещах, которые могут вызвать это:

  • Вы храните пользовательские данные в месте, совместно используемом запросами (например, в статической (C #) / общей (VB) переменной, в ASP.NET Cache, в объекте Application, ... )

  • У вас включено кэширование вывода.

Проверить:

  • Директивы OutputCache в ваших файлах aspx и ascx,

  • system.web / элемент кэширования в ваших файлах web.config,

  • Вызывает метод HttpCacheability.SetCacheability.

Если вы не можете найти проблему:

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

  • Во время этого процесса упрощения вы, вероятно, обнаружите проблему для себя. Если нет, опубликуйте код из упрощенной версии.

2 голосов
/ 28 марта 2009

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

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

0 голосов
/ 30 марта 2009

Похоже, проблема была вызвана тем, что я установил targetframe = "_ self" или Target = "_ self". Я удалил все это, и все, кажется, работает нормально.

Еще одно примечание: если бы я обновил страницу, он также отобразил бы страницу с правильным пользователем.

...