我有一个使用BlazeDS的Flex应用程序,可以使用Spring Security与Web应用程序进行通信。在正常使用期间,用户在运行Flex应用程序之前已经登录到Web应用程序,因此浏览器负责在传出消息上传递JSESSIONID会话cookie,以便Web应用程序知道他们来自谁。
但是,我希望能够从我的IDE(IntelliJ IDEA)运行flex应用程序进行调试,这意味着之前没有登录,因此没有现有的会话。我把一些代码 - 只是为了调试 - 首先发送登录消息。这样做,JSESSIONID cookie附带响应,但我不知道如何将它附加到应用程序的后续BlazeDS远程调用。
是否有某种通道配置可以执行此操作或其他方法?如果您打算将我指向BlazeDS / SpringSecurity预身份验证示例,我很欣赏这个想法,但我们已经有了一个相当复杂的Spring Security配置,我不想搞砸它。
顺便说一句,当我试图按照建议在RemoteObject的ChannelSet上调用login()
时,我有点不安,只是发现ChannelSet为空。我不知道它是怎么回事,因为远程调用工作,使用 - 我只能假设 - 在services-config.xml中定义的AMF通道。无论如何,我不知道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。
答案 0 :(得分:0)
我希望能够从我的IDE(IntelliJ IDEA)运行flex应用程序进行调试
使用Eclipse,您可以在本地主机或远程服务器上部署Eclipse IDE,方法是在开始调试时配置“Url或使用路径”。
JESSIONID意味着您正在使用Java EE身份验证,ChannelSet的登录方法可用于自定义和/或基本身份验证(可以是或不是Java EE身份验证),我认为最适合您的是部署在localhost上,或者最终在调试时删除安全性。