2009-08-20 2 views
4

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

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

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

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

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

UPDATE

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

Получают ли ваши пользователи доступ к этому сайту через внутреннюю сеть (сайт интрасети) или или через Интернет? Используют ли они продукт VPN, если он является внутренним, и они удалены? –

+0

В настоящее время сайт является демонстрационным сайтом, поэтому браузер и сервер находятся на одном ноутбуке. – ilivewithian

ответ

5

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

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

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

+0

Хорошая серия вопросов, но, к сожалению, ответ - нет, нет, нет, и это происходит в течение 10 секунд, и сеанс и пользователь, входящие в систему, установлены около 30 минут. – ilivewithian

+0

Я просто перечитываю последний бит вашего ответа, несколько рабочих процессов, как настроены, что более важно, как я могу отключить их для тестирования? – ilivewithian

+0

Как отключить несколько рабочих процессов немного отличается для IIS6 и 7. В 7 перейдите в Пул приложений для своего сайта, откройте расширенные настройки и убедитесь, что значение «Максимальные рабочие процессы» установлено на 1. Подробнее чем 1 может вызвать эту проблему. –

1

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

+0

Это возможно, но другое приложение на том же сервере, доступное из одного здания, не имеет (насколько мне известно, те же проблемы). Тем не менее, я буду копаться в журналах, чтобы узнать, не проблема. – ilivewithian

+0

Я видел некоторые странные вещи, когда у пользователей есть 2 рекламных соединения. –

0

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

1

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

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

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

+0

+1 для проверки запросов с помощью Fiddler –

2

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

0

Возможно, у вас нет специально указанного asp.net, чтобы использовать сеанс cookie, но разрешает либо cookie, либо сеансы cookieless.

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

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


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

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

Удалить куки на клиентском ПК, которые подыгрывая

0

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

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