Добрый день,Использование ColdFusion сеансов без печенья
Мы пытаемся реализовать API в ColdFusion 8 посредством куки не используются - вместо этого, мы передаем CFID, CFTOKEN и JSESSIONID от GET или POST для каждого запроса.
Мы используем mach-ii и его SessionFacade. Я не знаю, нужна ли вам дополнительная информация об этом; сообщите пожалуйста если сделаете.
В контроллере Coldfusion переменные клиента установлены в «Реестр», для каждой из переменных «Использовать переменные сеанса J2EE,« Включить переменные приложения »,« Включить переменные сеанса ») отмечены переменные памяти.
Мои Application.cfc псевдо-конструктор выглядит
<cfset this.name = "#cgi.server_name#" />
<cfset this.loginStorage = "session" />
<cfset this.sessionManagement = true />
<cfset this.setClientCookies = false />
<cfset this.setDomainCookies = false />
<cfset this.sessionTimeOut = CreateTimeSpan(0,1,0,0) />
<cfset this.applicationTimeOut = CreateTimeSpan(0,1,0,0) />
и нет ничего в onSessionStart или onSessionEnd.
Для проверки сессии, я использую плагин и в методе Preprocess у меня есть:
if (not getSessionFacade().has("authUserLoggedIn")){
arguments.eventContext.clearEventQueue();
arguments.eventContext.announceEvent("nologin", newEventArgs);
}
Я думаю, что первая вещь, которую я не понимая это, есть ли какие-либо обстоятельства, при которых необходимо отправлять cfid и cftoken при использовании сессий J2EE? Или jsessionid полностью и полностью заменяет свою функцию?
Во-вторых, я хочу, чтобы это приложение (а не весь сервер) не отправляло файлы cookie. В моем приложении Application.cfc у меня есть файлы cookie, отключенные, но он по-прежнему пытается отправить файл cookie, содержащий jsessionid.
Это то, что я считаю странные побочные эффекты:
В Firefox с Cookies отключены, то CFID, CFTOKEN и JSESSIONID вошел в URL правильно поддерживать состояние сеанса.
Но мы также использовали его с iPhone-приложением, которое принимает куки. Прежде чем мы исправили его, сохранив файл cookie в локальном хранилище, когда вы закрыли приложение и снова открыли его, файл cookie был потерян. Независимо от того, что все еще действительные cfid, cftoken и jsessionid отправляются в URL-адресе, он все равно дал нам ошибку «Не зарегистрирован».
Поэтому у меня есть три вопроса:
Во-первых, при использовании J2EE сессий, есть какие-либо обстоятельства, при которых мне нужно хранить и повторно отправить CFID и CFTOKEN?
Во-вторых, есть ли параметр уровня приложения, который я могу использовать, чтобы заставить jsessionid храниться вручную, а не использовать файл cookie?
В-третьих, на какой стадии находится jsessionid и переменные сеанса, заполненные из памяти? Это то, что я могу отладить или допросить, так что я могу положить что-то, чтобы сказать
if jsessionid refers to a current, valid session {
...
}
Что касается вашего последнего вопроса (в-третьих), это явно «onSessionStart()» стрельба. Когда onSessionStart() срабатывает, это означает, что у вас есть новый jsessionID; предположительно пустым. –
Не совсем то, что я имел в виду, - то, что я имел в виду, было в начале каждого запроса, когда jsessionid выбрано из URL-адреса или файла cookie, система проверяет, принадлежит ли он к действительному сеансу, а массив сеансов извлекается/заполняется для целей этой просьбы. –