C # .NET Как установить время сеанса до 6 часов с проверкой подлинности форм?

2

В моем приложении я использую проверку подлинности и сеансы. Как я могу позаботиться о том, чтобы пользователь вышел из системы через 6 часов?

В моем web.config я установил тайм-аут сеансов на 360 минут. Но после периода 10 минут бездействия я должен снова войти в систему.

Я также установил время ожидания проверки подлинности своих форм на 360 минут. Что я делаю неправильно?

Теги:
session-timeout

6 ответов

4
Лучший ответ

Есть и другие значения таймаута, которые повлияют на время сеанса. Один из них, который приходит мне на ум, - это тайм-аут рабочего процесса (который установлен из IIS). Рабочий интервал по умолчанию для рабочего процесса составляет 20 минут, поэтому, если на вашем сайте не будет активности в течение 20 минут, рабочий процесс завершится и закончит сеанс, если вы используете сеанс в режиме InProc. Таким образом, получение тайм-аута рабочего времени до 360 минут - это то, что вам может понадобиться.

3

попробуйте этот параметр:

< аутентификационный режим = "Формы" >      < form timeout = "360" slideExpiration = "true" / >    </аутентификации >

выполните следующие действия:

  • если ваш FormsAuthenticationTicket создан с более низким значением таймаута cookie, которое может переопределить

  • если промежуток рабочего процесса пула приложений "ниже" ниже, чем reset ранее состояние

  • 0
    Я не использую / настройка FormsAuthenticationTicket. Я использую только эту строку: FormsAuthentication.SetAuthCookie (userId.ToString (), false); Можно ли установить тайм-аут файла cookie FormsAuthenticationTicket в этой ситуации? Я использую IIS на win XP. Так что я не могу установить «выключение рабочих процессов», правильно?
  • 0
    без ткт, попробуйте формы тайм-аут Val
Показать ещё 2 комментария
1

Пошаговые инструкции Настроить страницу простоя процесса бездействия для единого пула приложений 1. Откройте диспетчер IIS.

2.Выберите "Пулы приложений" на панели "Соединения", выберите пул приложений в панели "Пул приложений", а затем "Дополнительные параметры..." на панели "Действия".

3. В диалоговом окне "Дополнительные параметры" в разделе "Модель процесса" необязательно установите значение "Время ожидания" с 20 минут по умолчанию на другой период времени.

4.Щелкните ОК.

1

Вам нужно настроить таймаут и slideExpiration:

<authentication mode="Forms">
    <forms requireSSL="false"
        defaultUrl="Default.aspx"
        loginUrl="Login.aspx"
        path="/"
        slidingExpiration="false"
        timeout="360"
        name=".ASPXFORMSAUTH">
    </forms>
</authentication>
  • 0
    Вы рекомендуете мне установить для параметра slideExpiration значение false, но jspcal рекомендует установить для свойства значение true ...
  • 0
    Если вы установили для параметра slideExpiration значение true, вы не сможете принудительно завершить сеанс через 6 часов, поскольку время сеанса будет обновляться до указанного времени ожидания при каждом запросе страницы.
1

Вместо того, чтобы устанавливать тайм-аут сеанса, вы можете реализовать механизм сохранения сеанса, например: обновить страницу или сделать ajax-вызов и т.д.

Вы можете добавить к этому, выполнив максимальное время входа в систему, которое можно проверить и т.д.

  • 2
    это приведет к тому, что сессия никогда не прекратится, и сервер будет излишне занят.
  • 1
    Он будет сохранять сессию до тех пор, пока открыто окно обозревателя, это безопаснее, чем установка 6-часового тайм-аута для сеанса, потому что это означает, что если кто-то закрывает страницу и открывает новый сеанс, первый будет оставаться открытым до тех пор, пока тайм-аут не израсходует ненужные ресурсы.
0

Используете ли вы InProc Sessions? (Это значение по умолчанию для ASP.net AFAIK) В этом случае проверьте, будет ли ваш пул приложений перезагружаться, так как это приведет к утери всех сеансов. У меня нет IIS для проверки, но я считаю, что он настроен на закрытие пула приложений, если он простаивает в течение заданного времени - если это ваш сервер разработки, возможно, вы слишком долго простаивали, чтобы AppPool перерабатывал и ваши InProc-сессии убиты?

Я не уверен, насколько легко быстро реализовать stateerver или sqlserver вместо inproc, но вот Страница MSDN о состоянии сеанса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню