‹cfcookie › Вызывает ошибку только на локальном

Код, с которым я работаю, имеет следующие строки в функции OnSessionStart в Application.cfc:

<cfcookie name="CFID" value="#SESSION.CFID#" />
<cfcookie name="CFTOKEN" value="#SESSION.CFTOKEN#" />

На моем LocalHost эти строки вызывают ошибку («CFID элемента не определен в SESSION») при первой попытке загрузить приложение. Но потом, когда я обновляюсь, он загружается нормально.

На развернутых средах (DEV и PROD) работает нормально, без ошибок.

Я просмотрел код и определил, что эти файлы cookie никогда не считываются кодом явно, поэтому я закомментировал их в своем LocalHost. Это устранило ошибку на моем LocalHost, но когда я развернул изменение в DEV, это предотвратило завершение аутентификации LDAP (даже если она успешно завершилась на LocalHost). Поэтому мне пришлось отменить изменение.

Это подводит нас к вопросу: Как я могу устранить ошибку в моем LocalHost, не ставя под угрозу процесс входа в систему в DEV и PROD? (Конечно, я могу жить с ошибкой, если мне нужно, но согласованный код база, работающая одинаково и надежно в обоих местах, гораздо желательнее.)

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

Моменты, которые могут быть полезны другим, у которых больше знаний и опыта, чем у меня:

  • Компьютер LocalHost — это Windows (Windows 7).
  • Среды DEV и PROD находятся в Linux.
  • LocalHost, DEV и PROD используют один и тот же процесс входа: <cfldap>.
  • В конце 2014 года мы обновили ColdFusion 9 до ColdFusion 11 во всех средах (включая мой LocalHost). Эта проблема не возникала в ColdFusion 9; скорее, это началось, когда я обновился до ColdFusion 11.
  • У меня нет доступа к Администратору ColdFusion на машинах Linux (DEV и PROD), хотя, конечно, у меня есть доступ к нему на моем LocalHost.

person Joe DeRose    schedule 21.07.2015    source источник
comment
Используете ли вы переменные сеанса J2EE?   -  person Leigh    schedule 21.07.2015
comment
Я использовал переменные сеанса J2EE на своем LocalHost, но мне сказали, что они не использовались в DEV и PROD. Я отключил их на LocalHost, и проблема исчезла. @ Ли, похоже, ты не страдаешь от очков, но если ты хочешь поставить это как ответ, я проголосую за него и отмечу его правильно.   -  person Joe DeRose    schedule 21.07.2015
comment
Кроме того, возникает вопрос, следует ли использовать переменные сеанса J2EE во всех средах. Если у вас есть какие-либо замечания, которые я должен передать нашему администратору сервера, я это сделаю.   -  person Joe DeRose    schedule 21.07.2015
comment
Спасибо за предложение, но вы должны написать его как ответ :) Как правило, J2EE считается более безопасным, чем по умолчанию. У меня нет времени, чтобы найти статью, о которой я думаю, но если вы выполните поиск, вы должны найти много дискуссий об идентификаторах сеансов J2EE и CF, различиях и так далее.   -  person Leigh    schedule 21.07.2015
comment
help.adobe.com/en_US/ColdFusion/9.0/Developing/   -  person rrk    schedule 21.07.2015
comment
@JoeDeRose - не забудьте написать ответ, чтобы закрыть эту тему :)   -  person Leigh    schedule 08.08.2015
comment
Что ж, на самом деле именно ваше понимание привело к ответу. Но я написал. Если вы решите, что вам нужны баллы, просто опубликуйте ответ, и я отмечу, что вы правы.   -  person Joe DeRose    schedule 10.08.2015


Ответы (1)


Рассмотрите возможность включения/отключения переменных сеанса J2EE в администраторе ColdFusion: Настройки сервера > Переменные памяти > Использовать переменные сеанса J2EE.

(В ситуации, для которой я задал вопрос, проблема была решена путем отключения переменных сеанса J2EE.)

person Joe DeRose    schedule 10.08.2015