Новый файл cookie сеанса, выданный на полпути через тайм-аут FormsAuthenticationTicket

#asp.net #session #timeout #formsauthenticationticket

#asp.net #сеанс #тайм-аут #formsauthenticationticket

Вопрос:

Я использую проверку подлинности Forms в своем asp.net Приложение 4.0 (обновлено с .NET 1.1). Я явно создаю объект FormsAuthenticationTicket, затем шифрую его (используя метод FormsAuthentication) и отправляю клиенту в виде файла cookie. Я использую FormsAuthentication.RenewTicketIfExpired() для установки скользящего истечения срока действия файла cookie аутентификации.

Я могу использовать Fiddler, чтобы узнать новый файл cookie сеанса, выданный на полпути через тайм-аут FormsAuthenticationTicket.

если тайм-аут formsauthentication = 2 мин, тайм-аут сеанса = 20 мин

т. е.

чч: мм: ss

10:00:00 пользователь входит в систему

Происходит обратная отправка в 10:01:10

Затем новый сеанс будет создан заново и завершится выходом из системы. Но я устанавливаю тайм-аут сеанса каждые 20 минут. Я пробовал разные значения тайм-аута formsauthentication, и новый сеанс всегда создается на полпути через тайм-аут.

Мне нужно установить тайм-аут formsauthentication на очень большое значение, чтобы избежать этого.

До обновления с .NET 1.1 такой проблемы не было

Кто-нибудь знает почему? является ли это ошибкой для решения проблемы со скользящим истечением срока действия в asp.net 4.0?

Комментарии:

1. Зачем вам устанавливать тайм-аут FormsAuthentication (т. Е. 2 минуты в вашем случае), просто полагайтесь на время ожидания сеанса и посмотрите, решит ли это проблему.

2. Проблема в том, что если я устанавливаю тайм-аут аутентификации forms таким же, как тайм-аут сеанса, тайм-аут возникает на полпути через тайм-аут аутентификации. Я хочу понять, почему это работает не так, как ожидалось.

Ответ №1:

Написание ответа, даже если вопрос очень старый, на случай, если кто-то столкнулся с этим так же, как я.

Это не ошибка, новый тикет выдается на полпути по истечении тайм-аута, потому что у вас есть SlidingExpiration =yes, что является значением по умолчанию.

Когда истечет скользящий срок действия, FormsAuthentication повторно выдаст тикет FormsAuthentication, действительный еще в течение x количества минут, где x — ваш параметр тайм-аута проверки подлинности forms, если истекло более половины периода тайм-аута.

Технически, хотя это должно происходить при каждом запросе, поступающем на сервер (а не только по истечении половины тайм-аута), И В НЕКОТОРОЙ ДОКУМЕНТАЦИИ ГОВОРИТСЯ, ЧТО ИМЕННО ТАК ЭТО ДЕЛАЕТСЯ, вероятно, это делается не так из соображений производительности, и некоторым браузерам, похоже, не нравится устанавливать файлы cookie так часто.

Смотрите http://msdn.microsoft.com/en-us/library/system.web.configuration.formsauthenticationconfiguration.slidingexpiration.aspx

Ответ №2:

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

Поскольку вы знаете, где это происходит, просто убедитесь, что вы не вызываете никакой переработки.

Комментарии:

1. переработка не производится. При перезапуске сайта у меня включается регистрация, но такой регистрации нет.