SharedObject (Flex 3.2) ведет себя неожиданно, когда строка запроса присутствует в URL - PullRequest
1 голос
/ 19 февраля 2009

Сводка: Представленное ниже поведение, по-видимому, указывает на то, что если ваше приложение на www.someplace.com устанавливает / извлекает данные через SharedObject, то при столкновении пользователя с вашим приложением возникает коллизия. на someplace.com, а затем на someplace.com?name=value.

Кто-нибудь может подтвердить или опровергнуть это?


Я работаю над веб-приложением Flex, которое предоставляет пользователю страницу входа. Когда пользователь вошел в систему, ему / ей предоставляется «комната», связанная с «группой».

Мы сохраняем последнюю посещенную комбинацию комнаты / группы в SharedObject - поэтому, когда данный пользователь входит в систему, он попадает в самую последнюю комнату, в которой он был активен.

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

1) строка запроса включает имя пользователя, идентификатор группы и номер комнаты

2) строка запроса включает только имя пользователя

Поскольку мы работаем быстро и у нас всего несколько разработчиков, система автоматического входа построена на системе last-vist. Во время процесса автоматического входа проверяется URL-адрес, и если в строке запроса обнаруживаются значения groupId и roomId, открывается SharedObject, а значения последнего идентификатора группы / номера комнаты перезаписываются значениями параметров.

Это прекрасно работает, также, когда приложение получает строку запроса второго типа (без параметров groupId и roomId), приложение переходит к SharedObject, чтобы получить значения сохраненной комнаты и идентификатора группы, как обычно , И вот проблема:

Значения, с которыми он возвращается, соответствуют значениям параметров последней комнаты / группы, а не значениям последней комнаты / группы последнего посещения.

И если данный пользователь никогда не обращался к приложению со строкой запроса, включающей значения идентификатора группы и комнаты, приложение получает нулевые значения из SharedObject.

Потребовалось немного покопаться, но похоже, что происходит то, что второй набор данных сохраняется / ожидается в SharedObject, если в URL присутствует строка запроса.

Глядя на файл .sol в текстовом редакторе, я вижу больше непереведенного кода и дополнительные значения групп и комнат, как только я попал в приложение с URL-адресами, содержащими строки запроса.

Я не нахожу в Интернете ничего об этом, но это может быть просто из-за отсутствия необходимых навыков поиска.

Кто-нибудь еще сталкивался с чем-нибудь подобным? Или ты знаешь как это решить?

Я уже пытался установить для Security.exactSettings значение false, уже действительно надеялся, что это сработает.

Ответы [ 2 ]

0 голосов
/ 18 ноября 2009

Звучит так, как будто вы правильно записываете в общий объект во время процесса входа в систему, но неправильно записываете комнату / группу в общий объект, когда пользователь меняет номера / группы во время использования приложения.

Вот почему значения будут нулевыми, если они никогда не попадали в приложение с параметрами комнаты / группы, и почему значения не отражают изменения, которые происходят после процесса входа в систему.

Также, чтобы убедиться, что значения сохраняются на диск после их записи, вы можете позвонить mySharedObject.flush().

0 голосов
/ 25 февраля 2009

Одна вещь, которую нужно запомнить: - Они делятся - но с задержкой. Если вы получите общий объект и внесете в него изменения, изменения будут записаны на клиент. .Sol - с задержкой.

Кроме того, я заметил, что для некоторых клиентов (особенно для Vista) доступ к ShraedObjects на ранней стадии состояния приложения вызывает исключение. Если вы попытаетесь еще раз чуть позже, это обычно будет успешным.

...