将JSESSIONID cookie转换为独立的BlazeDS应用程序消息

时间:2011-03-29 23:40:36

标签: session-cookies blazeds

我有一个使用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_usernamej_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。

1 个答案:

答案 0 :(得分:0)

  

我希望能够从我的IDE(IntelliJ IDEA)运行flex应用程序进行调试

使用Eclipse,您可以在本地主机或远程服务器上部署Eclipse IDE,方法是在开始调试时配置“Url或使用路径”。

JESSIONID意味着您正在使用Java EE身份验证,ChannelSet的登录方法可用于自定义和/或基本身份验证(可以是或不是Java EE身份验证),我认为最适合您的是部署在localhost上,或者最终在调试时删除安全性。