1

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

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

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

您建议使用 Flex 执行此操作的最佳方法是什么?

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

您还有其他建议或建议吗?

谢谢,

4

4 回答 4

2

Flash 中的网络请求使用浏览器网络堆栈,因此 Flex 中的 cookie 就像任何其他浏览器应用程序一样工作。通常,Flex 中的身份验证与标准 Web 应用程序中的身份验证没有什么不同。将凭据发送到与会话 ID 相关的服务器。每个后续请求(RemoteObject、HTTPService 等)也会发送该会话 ID。

于 2010-03-10T11:38:12.237 回答
1

我们已经看到,当我们进行 blazeDS (http) 远程调用时,flash 插件会传播会话 cookie

于 2010-03-10T10:24:51.510 回答
1

过去我们曾使用过 BlaseDS 和 HTTPServices。在这两种情况下,请求都通过 HTTP 发送到服务器。我们的服务器堆栈为 Java(具体为 JBoss)。

我们注意到 flex 客户端用于将会话信息与请求一起发送到服务器。我们使用相同的信息在服务器上存储和获取 Principal。

在一种情况下,我们将令牌传播给客户端。这是为了避免多次提交相同的请求——因此我们使用了令牌生成的常见 HTML 提交方法,其中每个响应都带有一个新的令牌,客户端必须将其发送回服务器以执行下一个请求。

对于会话到期,很有可能用户正在客户端上工作以满足任何本地需求,而不是与服务器一起工作,这可能导致服务器到期而不影响服务器。在这种情况下,我们在服务器上禁用了会话过期,并编写了自定义代码来处理事件——flex 客户端上的键盘和鼠标。如果应用程序在指定时间内未使用,则 flex 客户端将过期会话,即本地会话和服务器会话

于 2010-03-10T11:27:35.940 回答
1

您建议使用 Flex 执行此操作的最佳方法是什么?

$loggedIn=Authenticate::isAuthenticated();
if(!$loggedIn)return false;
$user=Authenticate::getAuthUser();

首先对用户进行身份验证,如果他已登录,则创建会话。将此包含在您的每个 PHP 或 Ruby 文件中,并检查它。将会话 ID 发送给 Flex 以维护状态,并设置会话到期的时间。

上面的代码确实检查了用户是否通过身份验证来访问 PHP 或 ruby​​ 类文件。

于 2010-03-10T11:34:45.470 回答