У меня есть гибкое приложение, использующее 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>
ТИА.