2010-08-22 4 views
4

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

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

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

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

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

Редактировать: Посмотрел файл cookie с помощью Fiddler, и, похоже, все в порядке. аутентификации печенье создан сегодня истекает через 2 недели с этого момента, который, как мой конфиг настроен: истекает = Mon, 06-Sep-2010 1:47:51 GMT

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

+2

Слишком много текилы? –

+0

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

+0

Я взглянул на файл cookie, и его срок действия - 2 недели в будущем. – dtc

ответ

4

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

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

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

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

+0

Я проверил истечение срока действия печенья, и кажется, что нормально (истекает через 2 недели, как и ожидалось). Второй пункт, который вы написали, кажется, что это может быть то, что я вижу. Думаю, я должен кое-что прочитать в файлах cookie для входа в систему и в машинном ключе. – dtc

+0

Вызывает недействительность печенья. Я добавил статический machineKey к web.config, и он еще не забыл мой логин. – dtc

3

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

+0

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

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