Доступ к переменным сеанса Coldfusion из одного application.cfm в другое - PullRequest
1 голос
/ 10 февраля 2012

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

Мы настраиваем магазин и хотели бы иметь доступ к переменным сеанса, для оценки участников, предварительного заполнения форм и так далее.На данный момент ссылка на хранилище доступна только после того, как участник входит в систему. Я включаю маркер URL в ссылку, например так:

https://mysite.com/store/index.cfm?<cfoutput>#session.urltoken#</cfoutput>

CF при выводе сеанса на страницу магазина отображается тот же cfid, cftoken и jsessionid как со страницы входа, так что я думаю, что сеанс поддерживается правильно - но ни одна из моих переменных сеанса не отображается в дампе, и если я пытаюсь сослаться на них, я получаю ошибку «is undefined in session».

Это происходит независимо от того, иду ли я от логина к магазину через http> http, https> https или другую комбинацию.Это все на одном сервере.Я был бы признателен за любую помощь в решении этой проблемы, или, если у кого-то есть лучшее предложение о том, как достичь нашей цели, я был бы очень признателен за это!Опять же, все, что я хочу сделать, - это чтобы магазин распознал вошедшего в систему члена как такового, когда они впервые попадают на домашнюю страницу магазина.Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Вы можете использовать область сервера.

<cfset server.sharedSession[session.urlToken]=session>

Чтобы скопировать в сеанс сервера:

<cfloop collection='#server.sharedSession['#url.urlToken#']#" index="i">
    <cfset session[i]=servers.sharedSession['#url.urlToken#'][i]>
</cfloop>

Вы можете просто скопировать весь сеанс, но зацикливание позволяет сохранить значения, которые ненет в исходной сессии.

0 голосов
/ 10 февраля 2012

Оба приложения должны иметь одинаковое имя

Если они имеют разные имена, то все переменные сеанса приложения являются специфическими для этого приложения.

, поэтому в application.cfm убедитесь, что имя установленоесли у вас есть файл application.cfc, который можно установить с помощью this.name в конструкторе.

...