Состояние сеанса ASP.Net для долго сохраняющихся аутентичных файлов cookie - PullRequest
1 голос
/ 31 июля 2009

У меня есть требование сохранять постоянную аутентификацию в течение длительного периода (1 месяц)

Я также использую довольно много переменных сеанса. Теперь я не могу установить тайм-аут сеанса так долго (это убьет сервер). В настоящее время установлено 30 минут.

Предположим, что пользователь держит окно браузера открытым в течение дня, cookie-файл аутентификации не истечет, но сеанс завершится. И приложение не будет работать.

То есть какие-либо предложения, обходные пути или полезные ссылки для этой проблемы?

1 Ответ

1 голос
/ 31 июля 2009

Сохранение файла cookie аутентификации является простым и независимым от состояния сеанса:

<system.web>
  <authentication mode="Forms">
    <forms timeout="43200"/>
  </authentication>
</system.web>

Время ожидания устанавливается в минутах, поэтому:

30 (дней) * 24 (часов) * 60 (минут) = 43200 минут

Материал сессии немного сложнее, но выполнимо.

Вам действительно нужно посмотреть, что вы на самом деле храните в сессии, и действительно ли вам нужно все это время. Поскольку переменные сеанса хранятся на сервере, они будут сохраняться при перезапусках приложения (по умолчанию это 20 минут после последнего действия на сайте или 29 часов с момента последнего перезапуска приложения и другие исключительные случаи) посмотреть на использование чего-то другого, кроме сессий InProc - либо с использованием сервера сессий, либо SqlSessions.

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

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

...