#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 так часто.
Ответ №2:
Возможно, ваш сайт перерабатывается. Это может произойти по нескольким причинам. Недавно я поймал себя на том, что изменилась структура каталога сайта (например, добавлена папка).
Поскольку вы знаете, где это происходит, просто убедитесь, что вы не вызываете никакой переработки.
Комментарии:
1. переработка не производится. При перезапуске сайта у меня включается регистрация, но такой регистрации нет.