У меня есть гибкое приложение, использующее BlazeDS, чтобы общаться с веб-приложением с помощью Spring Security. Во время обычного использования пользователь уже вошел в веб-приложение перед запуском гибкого приложения, поэтому браузер позаботится о передаче файла cookie сеанса JSESSIONID в исходящие сообщения, чтобы веб-приложение знало, от кого они исходят.
Однако я хотел бы иметь возможность запускать гибкое приложение из моей 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>
RemoteObject:
<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>
TIA.