2016-06-20 5 views
2

При настройке ColdFusion сеанса внутри application.cfm или application.cfc файла можно определить sessionTimeout как:Какие действия вызывают продление сеанса Coldfusion?

<cfapplication name = "appname" 
sessionTimeout = #CreateTimeSpan(0, 0, 30, 0)# <!--- 30min timeout ---> 
sessionManagement = "yes"> 

Я думаю, что ColdFusion сеанс «продлен» или «возобновлен» каждый раз, когда:

  1. пользователь переходит на новый ColdFusion шаблона (.cfm файл)
  2. пользователь обновляет Coldfusion шаблона (.cfm файл)
  3. пользователь обращается к Col dFusion Component (файл .cfc) любым способом, в том числе через вызовы ajax, которые запускают cffunction в файле .cfc.

Другими словами, если пользователь выполняет любое из действий выше (при условии, sessionTimeout 30 минут, как в приведенном выше примере) сессии истекает через 30 минут с момента, когда было выполнено действие - по существу, «расширение» срок службы сеанса до значения sessionTimeout каждый раз, когда пользователь выполняет одно из этих действий.

Правильно ли это понимание? Есть ли какие-либо действия, которые «продлевают» сеанс ColdFusion, который мне не хватает? Могут ли те, которые я перечисляю, действительно вести себя так, как я думаю, они ведут себя и «расширяют» сеанс?

+0

Чтобы лучше понять, подумайте о терминах клиент/сервер и поддерживайте состояние в среде без состояния, например, http-запросах. Если клиент является браузером, удалите файлы cookie, и в этот момент вы потеряли свою сессию. Сервер больше не знает, кто вы. –

+0

Да, именно так ColdFusion знает, к комкому пользователю будет привязываться его переменные сеанса на стороне сервера. По умолчанию, после заданного сервером времени ColdFusion считает, что сеанс, связанный с файлом cookie, слишком старый/истек. Существует несколько действий, которые перезапускают сеанс 'sessionTimeout' обратно к исходному' sessionTimeout' (aka 'renew' it), например, обновлять страницу cfm (которая обрабатывается сервером перед отправкой в ​​виде HTML/JS), посещая новая страница cfm (также попадает на сервер) и доступ к cfc (также попадает на сервер.) Мне просто интересно, не пропустил ли я какой-либо. – Ectropy

+0

Похоже, что (по умолчанию) в ColdFusion все, что попадает на сервер, дает сеансу немного больше времени, чтобы «жить». – Ectropy

ответ

3

Нечто подобное было предложено здесь: Can we renew session in Coldfusion?

Что говорит Алекс верно. Существует способ сохранить сеанс без файлов cookie, если вы посмотрите на документы. Ознакомьтесь с разделом Using client and session variables without cookies.

Единственный другой способ, которым я могу думать о продлении сеанса без вмешательства пользователя, был бы, если вы сможете найти сеанс через SessionTracker. Вот хороший пост об этом: Advanced ColdFusion Session Management.

В самом деле, в комментариях, он говорит, что если вы получаете доступ к сессии через встроенные методы Java, вы можете продлить их:

Вы можете отметить, что как только вы получите доступ к любому сеансы через эти методы, вы обновите отметку «lastAccessed».

+0

Интересно! Таким образом, вы можете продлить срок службы сеанса, обратившись к нему через сеансовый трекер. Это, конечно, техника, о которой я никогда не думал! Я предполагаю, что это 4 известных способа «обновления» сеанса - обновление cfm, открытие нового cfm, обращение к cfc через ajax и прямой доступ к сеансу через sessionTracker. – Ectropy

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

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