2010-01-29 4 views
1

Кажется I have to find a different way to transmit the session token от клиента Flex до бэкэнда Struts без использования файлов cookie.В какой момент я должен изменить способ, которым Struts приобретает токен сеанса?

Если бы я должен был поставить токен сеанса в полезной нагрузке запроса, в какой момент мне пришлось бы настраивать поведение Struts, чтобы я мог повторно использовать как можно большую часть существующей обработки сеанса? В частности, я не хочу переопределять любые меры безопасности (такие как привязка маркера к IP) и параметры конфигурации (такие как интервал истечения сеанса).

Есть ли перехватчик CreateSession, скорее ранний стек по умолчанию, следует ли мне поменять его на подклассу?

ответ

-1

Я не очень опытен с Flex, но поскольку это показалось мне интересным, и мне не нравится, когда вопросы остаются без ответа, я думал, что у меня будет удар. Насколько я понимаю, сеанс Flex (HttpFlexSession) и HttpSession являются полностью отдельными объектами. При этом вы должны иметь возможность обмениваться данными между ними.

Существует очень актуальная свободная глава (Chapter 20: Flex Integration with J2EE), доступная из книги Стивена Вебстера и Алистера Маклеода «Разработка Rich клиентов с Macromedia Flex».

Теперь я приведу цитату из этой свободной главы! Особо следует отметить:

Поддержание государственного

Самый большой скачок в понимании к быть не в том, что там больше не необходимость состояния HTTP сеанса. Хотя ваши запросы между богатым клиентом и сервером , в конечном счете делается через HTTP, HTTP свелась к транспортной технологии вместо технологии, что нам нужно интегрировать с. Разработчики J2EE удобны с концепцией размещения атрибутов и параметров в HTTP-запросе и объектов ответа и поддержания состояния путем хранения объектов в сеансе HTTP . ...

... Flex может фактически предлагают доступ к HTTP-сеанса и позволяет клиенту Flex лечить HTTP сессию «просто еще один объект на сервере.» Однако, по нашему опыту, использование сеанса HTTP должно быть «неприятным запахом» , которое идентифицирует возможность рефакторинга , чтобы перевести часть вашего состояния приложения на клиент.

В дальнейшем в этой главе показано, как настроить объект сеанса для доступа клиента Flex.

Получение доступа к J2EE сессий

Flex preconfigures сеанса сервлет в файле web.xml по умолчанию, который делает доступными на стороне сервера Java объект, который может быть использован для доступа и изменить сеанс J2EE для приложения .Разместив один из следующих определений удаленных объектов в нашей Service Locator в services.mxml, мы делаем доступными для нашего приложения услуг, которые можно получить и установить объекты на в J2EE сессии, а также удалить объектов из сессия:

<mx:Remote object source="servlet" id="sessionObject" /> 
<mx:Remote object source="@ContextRoot()" id="sessionObject"/> 

Как и с любым другой < тм: RemoteObject > тегом, служба сеанса может использовать результат и событие вина обработчиков обрабатывает запросы для извлечения элементов из сеанса. Дескриптор web.xml определяет имя сеанса сервлет как сервлет; Таким образом, мы используем один из следующих примеров работы с J2EE сессией:

sessionObject.session("set","customerID", 700); 
sessionObject.session("get", "customerID"); 
sessionObject.session("remove", "customerID"); 

Эти три примера показывает, как службы сеанса используется для получения, набора или удалять элементы в сеанс J2EE от клиента Flex.

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

Что касается мер безопасности, если вы использовали сервлет-фильтры для реализации ограничения IP-адресов, то ваша безопасность может быть применена ко всем ресурсам вашего веб-приложения (независимо от того, была ли она принадлежностью Struts или Flex).

+0

Извините, я ценю работу, которую вы вложили в свой ответ, но, к сожалению, это не относится к делу. Мой вопрос совсем не о Flex (клиентской стороне) вообще, это о том, что мне нужно сделать в Struts (на сервере). Также я не использую серверные компоненты, на которые они ссылаются в статье. Я явно ищу решение на основе Struts. –