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

发布于 2024-08-24 08:08:25 字数 400 浏览 11 评论 0原文

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

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

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

您建议使用 Flex 实现此目的的最佳方法是什么?

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

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

谢谢,

I'm using Flex 4(beta2) with Ruby on Rails 2.3.5 and using RubyAMF to transfer data back and forth between Flex and server.

I set up Authlogic on the Rails side for authentication.

I wasn't sure what's the best method to handle user sessions. I know this is done automatically with Rails by sending session id with cookie which Rails use to authenticate the user.

What do you suggest the best way to do this with Flex?

I thought of couple of options:
1. Manually fetching the cookie from the browser and then figuring our a way to send that to the server with every request I send.

2. Handling sessions expiration and flow on Flex side by manually expiring the session

Do you have other suggestion or recommendation?

Thanks,

Tam

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

初与友歌 2024-08-31 08:08:25

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

Network requests in Flash use the browser networking stack so cookies in Flex work just like any other browser application. Usually authentication in Flex is no different than it is with a standard web application. Send credentials to the server which it correlates with a session id. Every subsequent request (RemoteObject, HTTPService, etc) also sends that session id.

梦中楼上月下 2024-08-31 08:08:25

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

We have seen that the flash plug-in propagates the session cookie when we do blazeDS (http) remote calls

趁年轻赶紧闹 2024-08-31 08:08:25

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

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

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

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

In the past we have worked with BlaseDS and HTTPServices. In both the cases the request is sent to the server over HTTP. Our server stack as Java (JBoss to be specific).

We noticed that the flex client used to send the session information with the requests to the server. We used same information to store and fetch Principal on the server.

In one case, we propagated the token to the client. This was to avoid multiple submits for same requests - hence we used the common HTML submission approach of token generation where with every response carries with itself a new token and the client has to sent it back to the server for executing the next request.

For the session expiration, there is a good chance that a user is working on the client for any local needs and not working with the server which may have caused a expiration on the server without impacting the server. In this case, we disabled the session expiration on the server and wrote custom code to handle events - keyboard and mouse on the flex client. If the application was not used for a specified time, the flex client would expire both the sessions i.e. local and server

|煩躁 2024-08-31 08:08:25

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

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

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

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

What do you suggest the best way to do this with Flex?

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

First Authenticate the user and if he is logged in create the session. Include this in your every PHP or Ruby file, and check it. Send the Session ID to Flex to maintain the state and you set the time for your session to expire.

The above code does check, whether the user is authenticate to access the PHP or ruby class files.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文