2010-01-07 3 views
2

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

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

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

ответ

4

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

1

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

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

+2

это приведет к тому, что сеанс никогда не будет превышать тайм-аут и будет неустанно занят сервером. – Numenor

+1

Он будет удерживать сеанс до тех пор, пока откроется окно проводника, это безопаснее, чем установка времени ожидания сеанса 6 часов, поскольку это означает, что если кто-то закрывает страницу и открывает новый сеанс, первый будет оставаться открытым до тех пор, пока тайм-аут не потратит ненужные ресурсы. – jmservera

3

попробовать этот параметр:

режим

< аутентификации = "Forms" > < формы тайм-аут = "360" slidingExpiration = "истинный"/> </аутентификации >

пару вещей, чтобы проверить также:

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

  • , если пул приложений " выключить рабочие процессы ", будет сброшен статус ранее

+0

Я не использую/устанавливаю FormsAuthenticationTicket. Я использую только эту строку: FormsAuthentication.SetAuthCookie (userId.ToString(), false); Можно ли установить тайм-аут cookie FormsAuthenticationTicket в этой ситуации? Я использую IIS на выигрыше XP. Поэтому я не могу установить «shutdown work processes», правильно? – Martijn

+0

w/no tkt, попробуйте формы timeout val – jspcal

+0

Извините, но что означает w/no tkt? – Martijn

1

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

<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 ... – Martijn

+0

Если вы установите slideExpiration на ** true **, вы не сможете принудительно завершить сеанс через 6 часов, потому что окно сеанса возобновится к указанному таймауту с каждым запросом страницы. – Filburt

0

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

Я не уверен, насколько легко быстро реализовать stateerver или sqlserver вместо inproc, но вот MSDN Page about Session State.

1

Шаг за шагом инструкции Настройка Idle рабочего процесса Page-Out для одного пула приложений диспетчера 1.Open IIS.

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

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

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

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

  • Нет связанных вопросов^_^