使用Flex处理cookie进行身份验证

时间:2010-03-10 05:23:42

标签: ruby-on-rails flex rubyamf

我在Ruby on Rails 2.3.5中使用Flex 4(beta2),并使用RubyAMF在Flex和服务器之间来回传输数据。

我在Rails端设置了Authlogic进行身份验证。

我不确定处理用户会话的最佳方法是什么。我知道这是通过发送带有cookie的会话ID自动完成的,Rails用它来验证用户。

您建议使用Flex的最佳方法是什么?

我想到了几个选项:
 1.手动从浏览器中获取cookie,然后根据我发送的每个请求找出将其发送到服务器的方法。
2。通过手动使会话过期来处理Flex端的会话到期和流程

您有其他建议或推荐吗?

谢谢,

4 个答案:

答案 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类文件。