В моем приложении я использую проверку подлинности и сеансы. Как я могу позаботиться о том, чтобы пользователь вышел из системы через 6 часов?
В моем web.config я установил тайм-аут сеансов на 360 минут. Но после периода 10 минут бездействия я должен снова войти в систему.
Я также установил время ожидания проверки подлинности своих форм на 360 минут. Что я делаю неправильно?
Есть и другие значения таймаута, которые повлияют на время сеанса. Один из них, который приходит мне на ум, - это тайм-аут рабочего процесса (который установлен из IIS). Рабочий интервал по умолчанию для рабочего процесса составляет 20 минут, поэтому, если на вашем сайте не будет активности в течение 20 минут, рабочий процесс завершится и закончит сеанс, если вы используете сеанс в режиме InProc. Таким образом, получение тайм-аута рабочего времени до 360 минут - это то, что вам может понадобиться.
попробуйте этот параметр:
< аутентификационный режим = "Формы" > < form timeout = "360" slideExpiration = "true" / > </аутентификации >
выполните следующие действия:
если ваш FormsAuthenticationTicket создан с более низким значением таймаута cookie, которое может переопределить
если промежуток рабочего процесса пула приложений "ниже" ниже, чем reset ранее состояние
Пошаговые инструкции Настроить страницу простоя процесса бездействия для единого пула приложений 1. Откройте диспетчер IIS.
2.Выберите "Пулы приложений" на панели "Соединения", выберите пул приложений в панели "Пул приложений", а затем "Дополнительные параметры..." на панели "Действия".
3. В диалоговом окне "Дополнительные параметры" в разделе "Модель процесса" необязательно установите значение "Время ожидания" с 20 минут по умолчанию на другой период времени.
4.Щелкните ОК.
Вам нужно настроить таймаут и slideExpiration:
<authentication mode="Forms">
<forms requireSSL="false"
defaultUrl="Default.aspx"
loginUrl="Login.aspx"
path="/"
slidingExpiration="false"
timeout="360"
name=".ASPXFORMSAUTH">
</forms>
</authentication>
Вместо того, чтобы устанавливать тайм-аут сеанса, вы можете реализовать механизм сохранения сеанса, например: обновить страницу или сделать ajax-вызов и т.д.
Вы можете добавить к этому, выполнив максимальное время входа в систему, которое можно проверить и т.д.
Используете ли вы InProc Sessions? (Это значение по умолчанию для ASP.net AFAIK) В этом случае проверьте, будет ли ваш пул приложений перезагружаться, так как это приведет к утери всех сеансов. У меня нет IIS для проверки, но я считаю, что он настроен на закрытие пула приложений, если он простаивает в течение заданного времени - если это ваш сервер разработки, возможно, вы слишком долго простаивали, чтобы AppPool перерабатывал и ваши InProc-сессии убиты?
Я не уверен, насколько легко быстро реализовать stateerver или sqlserver вместо inproc, но вот Страница MSDN о состоянии сеанса.