【问题标题】:Handling cookies with Flex for Authentication使用 Flex 处理 cookie 以进行身份​​验证
【发布时间】:2010-03-10 05:23:42
【问题描述】:

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

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

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

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

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

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

谢谢,

【问题讨论】:

    标签: ruby-on-rails apache-flex rubyamf


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          【解决方案4】:

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

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

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

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

          【讨论】:

            猜你喜欢
            • 2018-01-18
            • 1970-01-01
            • 1970-01-01
            • 2011-09-18
            • 1970-01-01
            • 2017-05-06
            • 2014-10-02
            • 2016-03-24
            • 2018-07-23
            相关资源
            最近更新 更多