Что может заставить приложение asp.net забыть пользователя? - PullRequest
4 голосов
/ 23 августа 2010

У меня есть приложение asp.net, которое, кажется, забывает, что пользователь вошел в систему через некоторое время.

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

Другие странные вещи:

  1. На моей машине для разработки он запоминает логин навсегда. Даже после перезапуска и перекомпиляции IIS он запомнит мой логин, как и ожидалось.
  2. У меня есть другое приложение на том же сервере, которое запоминает логин навсегда. Я сравнил, как они обрабатывают логин, и они кажутся идентичными.

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

Edit: Посмотрел куки с помощью Fiddler, и они вроде бы в порядке. Срок действия файла cookie для аутентификации, созданного сегодня, истекает через 2 недели, и так настроен мой конфиг: истекает = понедельник, 06 сентября 2010 года 01:47:51 GMT

Edit: Похоже, проблема заключается в том, что пул приложений перерабатывается и cookie-файл проверки подлинности становится недействительным, поскольку он больше не может быть прочитан после изменения ключа компьютера. Решением было добавить сегмент machineKey в web.config и предоставить статический ключ машины.

Ответы [ 2 ]

4 голосов
/ 23 августа 2010

Есть две основные возможности.

  1. Срок действия cookie. Если срок действия файла cookie истекает / уходит, значит, вы вышли из системы.

  2. Аннулирование cookie. Файлы cookie для входа в систему шифруются на основе значения machineKey. Если вы не укажете machineKey, новый генерируется каждый раз при запуске пула приложений (или перезапуска). Это означает, что любой файл cookie для входа в систему, зашифрованный старым machineKey, теперь недействителен, и вы не будете считаться вошедшим в систему.

Проверьте, какие настройки очистки находятся в вашем пуле приложений в IIS, и посмотрите, соответствует ли это времени, когда вы не вошли в систему.

3 голосов
/ 23 августа 2010

Функциональность «Запомнить меня» осуществляется с помощью файлов cookie.Куки могут быть установлены с истечением срока годности.Вам нужно посмотреть, как устанавливается cookie (Fiddler хорош для этого, вы можете проверить заголовок HTTP, когда cookie установлен).

...