我在Ruby on Rails 2.3.5中使用Flex 4(beta2),并使用RubyAMF在Flex和服务器之间来回传输数据。
我在Rails端设置了Authlogic进行身份验证。
我不确定处理用户会话的最佳方法是什么。我知道这是通过发送带有cookie的会话ID自动完成的,Rails用它来验证用户。
您建议使用Flex的最佳方法是什么?
我想到了几个选项:
1.手动从浏览器中获取cookie,然后根据我发送的每个请求找出将其发送到服务器的方法。
2。通过手动使会话过期来处理Flex端的会话到期和流程
您有其他建议或推荐吗?
谢谢,
担
答案 0 :(得分:2)
Flash中的网络请求使用浏览器网络堆栈,因此Flex中的cookie可以像任何其他浏览器应用程序一样工作。通常,Flex中的身份验证与使用标准Web应用程序时的身份验证没有区别。将凭据发送到与会话ID相关联的服务器。每个后续请求(RemoteObject,HTTPService等)也会发送该会话ID。
答案 1 :(得分:1)
我们看到当我们进行blazeDS(http)远程调用时,flash插件会传播会话cookie
答案 2 :(得分:1)
过去我们使用过BlaseDS和HTTPServices。在这两种情况下,请求都通过HTTP发送到服务器。我们的服务器堆栈为Java(JBoss具体)。
我们注意到Flex客户端用于将带有请求的会话信息发送到服务器。我们使用相同的信息在服务器上存储和获取Principal。
在一种情况下,我们将令牌传播到客户端。这是为了避免多次提交相同的请求 - 因此我们使用了令牌生成的常见HTML提交方法,其中每个响应都带有一个新令牌,客户端必须将其发送回服务器以执行下一个请求。
对于会话到期,用户很可能在客户端上工作以满足任何本地需求,而不使用可能导致服务器过期而不影响服务器的服务器。在这种情况下,我们在服务器上禁用了会话过期,并编写了自定义代码来处理Flex客户端上的事件 - 键盘和鼠标。如果应用程序未在指定时间内使用,则Flex客户端将使会话(即本地和服务器)
到期答案 3 :(得分:1)
您建议使用Flex的最佳方法是什么?
$loggedIn=Authenticate::isAuthenticated();
if(!$loggedIn)return false;
$user=Authenticate::getAuthUser();
首先验证用户,如果他已登录,则创建会话。将其包含在您的每个PHP或Ruby文件中,并进行检查。将会话ID发送到Flex以维持状态,并设置会话到期的时间。
上面的代码会检查用户是否通过身份验证来访问PHP或ruby类文件。