2013-03-05 2 views
0

У меня есть страница входа в систему, которая находится на одном домене, а приложение - на другом.сеансы coldfusion, сброшенные при инициировании другим доменом

Когда я использую логин из отдельного домена, переменные сеанса не сохраняются для второго домена, хотя это домен, который их создает.

Чтобы было ясно, я не разделяя сессий между доменами

домен Войти запускает скрипт в домене приложения, где приложение создает переменную сеанса. Эта переменная не передается при вызове перенаправления в домене приложения.

Если я вызываю скрипт из того же домена, сеанс хранится как ожидалось. Забавно, что до сегодняшнего дня все было хорошо. Возможно, некоторые настройки cf изменились.

Я заметил, что передаются CFID и CFTOKEN, возможно ли, что сеанс написан с использованием CFID и CFTOKEN со ссылкой на веб-сайт?

если да, то как я могу предотвратить это?

ответ

3

Вы можете переопределить поведение по умолчанию куки сессии, установив this.setclientcookies = false в Application.cfc, и выдать ваш cfcookie-х в Application.cfc-х onSessionStart()

например

<cfcomponent> 
    <cfset this.sessionmanagement = true> 
    <cfset this.setclientcookies = false> 
    <cffunction name="onSessionStart"> 
     <cfcookie name="CFID" value="#session.cfid#" domain=".subdomain.domain.com"> 
     <cfcookie name="CFTOKEN" value="#session.cftoken#" domain=".subdomain.domain.com"> 
    </cffunction> 
<cfcomponent> 

Пока вы на него, было бы хорошей идеей, чтобы установить атрибут истинный httpOnly а.

+0

Я получаю сообщение об ошибке «Рутины не могут быть объявлены более одного раза», когда я включаю бит cffunction. и ' ' не работал для меня :( – Daniel

+1

Вы 'onSessionStart' объявили где-то еще в файле App.cfc, вот что такое ошибка – Busches

+0

Я использую CFwheels, так что да, это :). Я добавил его в нужное место, но он все еще не работал. – Daniel

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