2010-02-04 1 views
0

Внутри приложения flex у меня есть логин пользователя. Логин вызывает функцию ColdFusion как удаленный объект, который аутентифицирует пользователя и, если применимо, возвращает свой идентификатор и уровень доступа. Это прекрасно работает, но теперь я нахожусь в том месте, где я хочу также создать файл cookie для другого шаблона ColdFusion (вызванный из fileReference.upload()), чтобы иметь возможность доступа позже.Как создать cookie через flex/coldfusion, который можно прочитать другим шаблоном?

Я пробовал несколько различных методов для создания файла cookie - cfcookie, создавая cookie с JavaScript внутри функции ColdFusion и создавая cookie с JavaScript с внешним интерфейсом, как только функция coldfusion вернется к обработчику результата flex. Все они были опробованы с множеством опций в отношении тегов истечения срока действия, пути и домена.

Любой из них, похоже, работает для создания файлов cookie. Куки-файлы отображаются в списках для моего домена в Chrome, а также в надстройке Firefox «View Cookies 1.9.2», который я установил именно для этой цели. Тем не менее, все же ни одно из этих файлов cookie не может быть прочитано моим upload.cfm, когда оно будет вызвано позже.

Upload.cfm, однажды вызванный запросом загрузки файла, отправляет идентификатор пользователя вместе с файлом. Отсюда должно быть простое сравнение между идентификатором, отправленным с файлом, и идентификатором из файла cookie. До сих пор шаблон upload.cfm не смог найти файл cookie (с любым из методов создания), смотрящий на очевидное # cookie.name # или даже # name #.

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

Спасибо за чтение,

-cs

+0

Следует также упомянуть, что все это работает на внутреннем веб-сервере ColdFusion на локальной машине. – 2010-02-04 15:10:06

ответ

2

Вы сделали большинство/все ваши испытания в браузере, кроме Internet Explorer?

К сожалению, есть a bug in the Flash player [Войти требуется], которые можно резюмировать следующим образом:

  • (В других, чем Internet Explorer браузеров) Флэш-плеер использует другой сетевой стек, чем браузер, и поэтому ..
  • Запросы, сделанные флэш-плеером, имеют разную сессию на стороне сервера, чем, например, запрос на страницу, в которую встроен флеш-плеер.

Это приводит к ситуации, когда переменные сеанса, заданные этой страницей, не являются (легко, по умолчанию) доступными для удаленных запросов, сделанных флеш-плеером на странице.

CFID и CFTOKEN устанавливаются как файлы cookie, а также хранятся в переменной session.urlToken. (JSessionId также включен, если вы используете управление сеансом Java).

Я не уверен, но я думаю, что это может быть причиной вашей проблемы.

Я считаю, что если вы передадите значения CFID и CFTOKEN (и JSessionId) в ваше приложение Flex в качестве FlashVars, а затем включите их в удаленные запросы на сервер, чтобы файлы cookie, которые вы устанавливаете, будут доступны позже удаленные запросы со вспышкой (т. е. загрузка).

+0

Звучит разумно, поскольку я видел разные результаты, исходящие от IE, чем Chrome/Firefox. Я сделаю это. Благодаря! – 2010-02-04 16:07:55

+0

Мне не повезло, что этот метод тоже работает. Cfid и cftoken выходят в шаблоне загрузки одинаково, но я до сих пор не могу получить доступ к файлам cookie или переменным сеанса. Я в тупике. – 2010-02-04 22:02:18

+0

Без какого-либо кода, чтобы проверить, что это о лучшем, что я могу сделать. Вы рассматривали альтернативу куки? Как насчет записи базы данных, привязанной к пользователю? –

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