Получение файла cookie JSESSIONID в автономных сообщениях приложения BlazeDS - PullRequest
2 голосов
/ 30 марта 2011

У меня есть гибкое приложение, использующее BlazeDS для общения с веб-приложением, использующим Spring Security. При обычном использовании пользователь уже вошел в веб-приложение перед запуском гибкого приложения, поэтому браузер позаботится о передаче файла cookie сеанса JSESSIONID для исходящих сообщений, чтобы веб-приложение знало, от кого они поступают.

Однако я хотел бы иметь возможность запускать приложение flex из моей IDE (IntelliJ IDEA) для отладки, а это означает, что ранее не было входа в систему и, следовательно, не существовало сеанса. Я вставил некоторый код - просто для отладки - чтобы сначала отправить сообщение для входа. Это работает, и файл cookie JSESSIONID приходит с ответом, но я не знаю, как подключить его к последующим вызовам удаленного взаимодействия BlazeDS, которые делает приложение.

Есть ли какая-то конфигурация канала, которая делает это, или какой-то другой метод? И если вы собираетесь указать мне пример предварительной аутентификации BlazeDS / SpringSecurity, я ценю эту мысль, но у нас уже есть довольно сложная конфигурация Spring Security, и я не хочу с ней связываться.

Кроме того, я был немного смущен, когда попытался последовать предложению вызвать login() на ChannelSet RemoteObject, но обнаружил, что ChannelSet был нулевым. Я не понимаю, как это может быть, так как вызовы удаленного взаимодействия работают, используя - я могу только предположить - канал AMF, определенный в services-config.xml. В любом случае, я не знаю, работает ли login(), отправляя j_username и j_password на /j_spring_security_check в любом случае, так что это может быть неуместно; и, конечно, я все еще остался бы с темой этого запроса, а именно с тем, как использовать сеанс после его создания.

Не думаю, что это поможет объяснить что-либо, но я добавлю немного кода и фрагментов конфигурации ...

Логин:

<mx:HTTPService id="loginRequest" url="http://fiddler:8080/app/j_spring_security_check" useProxy="false"
            method="POST" result="handleLoginResult(event)">
<mx:request xmlns="">
    <j_username>username</j_username>
    <j_password>password</j_password>
</mx:request>
</mx:HTTPService>

Удаленный объект:

<mx:RemoteObject id="remoteObject" destination="blazebackend">
    <mx:method name="getConfigData" result="handleConfigDataResult(event)" fault="handleFault(event)"/>
    <mx:method name="addSession" result="handleAddSessionResult(event)" fault="handleFault(event)"/>
</mx:RemoteObject>

Канал:

<channel-definition id="my-amf" class="mx.messaging.channels.AMFChannel">
    <endpoint url="/{context.root}/app/amf" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>

ТИА.

1 Ответ

0 голосов
/ 30 марта 2011

Я бы хотел иметь возможность запустить приложение flex из моей IDE (IntelliJ IDEA) для отладки

Используя Eclipse, вы можете отлаживать в Eclipse IDE при развертывании на локальном хосте или на удаленном сервере, настроив «URL или путь для использования» при запуске отладки.

JESSIONID означает, что вы используете аутентификацию Java EE, метод входа в систему ChannelSet можно использовать для пользовательской или базовой аутентификации (которая может быть аутентификацией Java EE или нет), я думаю, что для вас лучше всего развернуть на локальном хосте или в конечном итоге удалить безопасность при отладке.

...