В какой момент я должен изменить способ получения Struts токена сеанса? - PullRequest
1 голос
/ 29 января 2010

Кажется, Мне нужно найти другой способ передачи токена сеанса из клиента Flex в серверную часть Struts без использования файлов cookie.

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

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

1 Ответ

0 голосов
/ 13 апреля 2010

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

Существует очень важная бесплатная глава ( Глава 20: Интеграция Flex с J2EE ), которую можно найти в книге Стивена Вебстера и Алистера Маклеода «Разработка богатых клиентов с помощью Macromedia Flex».

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

Поддержание состояния

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

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

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

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

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

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

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

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

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

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

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

...