Миграция на CF2018 и проблемы с сессиями - PullRequest
1 голос
/ 01 октября 2019

Я недавно перенес приложение из CF2010 в CF2018, и у нас возникают проблемы с сеансами, когда пользователь входит в систему.

При добавлении некоторых дампов и прерываний я вижу, что сеанс успешно установлен на действительный логин,но при использовании cflocation или cfheader он теряет сеанс (application.cfc перезапускает onSessionStart). Мой application.cfc выглядит так:

this.applicationTimeout = createTimeSpan(0,8,0,0);
this.sessionmanagement = true;
this.clientmanagement = false;
this.sessiontimeout = createTimeSpan(0,0,20,0);
this.scriptProtect = "all";  
this.setClientCookies = true;
this.showDebugOutput = false;
this.enablecfoutputonly = false;

onSessionStart довольно прост:

public void function onSessionStart() {
  lock scope="session" type="exclusive" timeout="10" {
    session.started = now();
    session.loggedIn = false;
  };
  lock scope="application" type="exclusive" timeout="5" {
    application.sessions = application.sessions + 1;
  };

  writeLog(file = "g-session-log", type = "information", application = "no", text = "session started:");
};

Я вижу, как файл журнала получает запись при обработке страницы входа. В администраторе сервера я проверил «Использовать переменные сеанса J2EE» и «Включить переменные сеанса». Тайм-аут файла cookie равен 1440, проверяется HTTPOnly и проверяется «Отключить обновление внутренних файлов cookie ColdFusion с использованием тегов / функций ColdFusion».

1 Ответ

2 голосов
/ 01 октября 2019

Найдена проблема - ответ на случай, если у кого-то еще есть эта проблема. В моем onApplicationStart() я установил http и https siteroot. На <cflocation>, который называется application.secureSiteRoot, но из-за того, что я переносил сертификат SSL для тестирования, я установил для него http, а не https. Это предотвратило установку файлов cookie.

...