Двойной вход в систему для некоторых пользователей приложения ASP.Net WebForms - PullRequest
4 голосов
/ 20 августа 2009

У меня есть приложение asp .net webforms, которое использует аутентификацию форм. Для небольшого числа пользователей у нас есть проблема, когда они входят в систему, они переходят на пару страниц, а затем их просят войти снова. После второго входа в систему они могут оставаться в системе, как и ожидалось. Их не следует просить войти во второй раз.

Это один сервер, нет веб-ферм, ничего сложного.

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

Кто-нибудь еще видел что-нибудь подобное?

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

UPDATE

  1. Прокси-сервер отсутствует, сервер IIS и браузер (IE8) находятся на одном компьютере.
  2. Установленное программное обеспечение AV - это Symantec Endpoint, на одном компьютере, на другом у пользователя не было AV вообще (AV Fail!).
  3. Браузер IE 8 без излишеств, ни единого надстройки, не поставляемой с установкой по умолчанию.
  4. Время ожидания сеанса и входа пользователя в систему установлено на 30 минут, и проблема возникает в течение 1 минуты после входа пользователя в систему.
  5. В журнале показано, что у пользователя только один IP-адрес.
  6. Я пробовал сессионный режим во всех его вариациях, похоже, это не имеет значения.

Ответы [ 8 ]

5 голосов
/ 20 августа 2009

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

  1. Получают ли пользователи доступ к сайту через прокси-сервер? У одного из наших клиентов есть прокси, который иногда закрывает все открытые соединения, заставляя ASP.NET видеть сеанс как новый.
  2. Может ли чрезмерно агрессивный антивирусный и антишпионский продукт "съедать" файл cookie аутентификации сеанса?
  3. Есть ли у них надстройка браузера менеджера файлов cookie, которая приводит к исчезновению или изменению файла cookie аутентификации?
  4. Звучит просто, но я видел, как это произошло из-за слишком короткого времени ожидания на сайте. Если пользователь сидит на странице дольше, чем время ожидания, он будет вынужден снова войти в систему. И это может быть характерно для страницы, когда на этой странице представлен большой объем данных, для прохождения которых требуется некоторое время.

Еще одна вещь, о которой я только что подумал: разрешено ли вам несколько рабочих процессов для процесса ASP.NET (он-лайн веб-сады)? Если это так, то для аутентификации применяются те же ограничения, что и для веб-фермы.

2 голосов
/ 22 сентября 2009

Взломайте Fiddler с ПК проблемного пользователя и посмотрите, что передается в заголовках. Моя ставка на прокси-сервере и / или проблема с сетью.

1 голос
/ 24 сентября 2009

Удалите cookie на клиентских ПК, которые воспроизводятся

1 голос
/ 21 сентября 2009

Люди делают это с помощью браузера, который как-то отличается (другой браузер, другая версия, разные расширения)? Это может быть ключом.

В общем, когда проблема несколько воспроизводима или, по крайней мере, предсказуема, я использую Http Fiddler . Установите его на клиентский компьютер, включите его и начните просмотр (это работает через системный прокси-сервер - так что он будет работать как для Firefox, IE, так и для любых других браузеров, поддерживающих прокси). Fiddler запишет весь http-трафик между клиентом и сервером, и вы сможете позже просмотреть такой сеанс, чтобы найти какие-либо странности.

Это долгий путь, но одна вещь, которую я иногда видел, может привести к такого рода непредсказуемым ошибкам - это проблемы с распараллеливанием сценариев: иногда кнопки + ссылки имеют обработчики нажатия, которые вызывают постбэк. Если у вас есть несколько таких обработчиков, которые срабатывают для одного и того же события - в частности, когда событие по умолчанию все еще срабатывает в дополнение к вашему пользовательскому щелчку мыши или еще чему-то - вы можете вызывать несколько обратных возвратов, когда они выглядят как одиночные. Это может вызвать все виды непредсказуемых странностей, так как не совсем ясно, какой запрос заканчивается «победой», а некоторые странные ошибки могут привести к завершению сеанса. Поскольку это поведение очень чувствительно к браузеру + задержке в сети, при его возникновении оно выглядит непредсказуемым.

1 голос
/ 20 августа 2009

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

0 голосов
/ 25 сентября 2009

Чтобы исключить возможность путаницы браузера или аддона браузера, вы проверили их строки User Agent? Если они распределены случайным образом, это может не вызвать проблемы, но если они все одинаковые, это тоже может быть подсказка.

0 голосов
/ 22 сентября 2009

Возможно, у вас нет специально заданного asp.net для использования сеанса на основе файлов cookie, но вы разрешаете либо сеансы cookie, либо сеансы без файлов cookie .

В последнем случае идентификатор сеанса встраивается в URL. Тип проблем, с которыми вы сталкиваетесь, может быть объяснен этим. В основном в зависимости от того, как вы определяете свои ссылки , некоторые из них не получат идентификатор сеанса , поэтому пользователь получит новый сеанс при использовании этих ссылок - или возможно во время перенаправления . Это может объяснить, почему в определенных частях вашего сайта пользователи теряют свою сессию.

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


Обновление: На основании опубликованной дополнительной информации, безусловно, требуется больше информации для этого. Некоторые дополнительные вещи для проверки:

  • Используете ли вы субдомены, в этом случае файл cookie не может быть настроен для разрешения этого, и это не удается во всех средах.
  • Если вы используете внутрипроцессный сеанс, убедитесь, что в приложении нет ошибки, вызывающей перезапуск процесса
  • Возможно, причиной того, что он снова запрашивает логин, является проверка авторизации, и у вас возникла проблема с кодом, связанным с некоторыми ролями
  • Возможно ли, что пользователь просто открывает отдельное окно? ;)
0 голосов
/ 21 сентября 2009

Аутентификация с помощью ASP.NET Forms может перенаправлять пользователей на страницу входа в систему, если у них нет учетных данных для доступа к определенной странице. Это делается для того, чтобы пользователям, у которых может быть более одного входа, предоставляется возможность войти в систему с другой учетной записью, которая может иметь соответствующий доступ. Основной вопрос, который я знаю, но используют ли пользователи те же учетные данные при втором входе в систему?

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