Я недавно перенес приложение из 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».