1

摘要:下面详述的行为似乎表明,如果您在 www.someplace.com 上的应用程序通过 SharedObject 设置/检索数据,那么如果用户在 someplace.com 上点击您的应用程序,则会出现某种 .sol 冲突,然后在someplace.com?name=value。

任何人都可以证实或反驳这一点吗?


我正在开发一个为用户提供登录页面的 Flex Web 应用程序。当用户登录后,他/她会看到一个与“组”相关联的“房间”。

我们将最后访问的房间/组组合存储在 SharedObject 中 - 因此,当给定用户登录时,他们会被带到他们最近处于活动状态的房间。

这很好用,但我们也有一个自动登录系统,该系统涉及用户单击应用程序 url 的链接,并附有查询字符串。这些链接有两种类型。

1)查询字符串包括username、groupId、roomId

2) 查询字符串只包含用户名

因为我们工作速度很快,而且只有少数开发人员,所以自动登录系统是建立在 last-vist 系统上的。在自动登录过程中,会检查 url,如果在查询字符串中找到 groupId 和 roomId 值,则打开 SharedObject 并且最后访问组/房间 id 值被参数值覆盖。

这也可以正常工作,当应用程序遇到第二种类型的查询字符串(没有 groupId 和 roomId 参数)时,应用程序会像往常一样转到 SharedObject 以获取存储的房间和组 ID 值。这就是问题所在:

它返回的值是最后一个房间/组参数值是什么,而不是最后一次访问房间/组值是什么。

如果给定用户从未使用包含组和房间 ID 值的查询字符串访问应用程序,则应用程序会从 SharedObject 获取空值。

它需要一些挖掘,但看起来正在发生的是,如果 URL 中存在查询字符串,则第二组数据正在存储/预期在 SharedObject 中。

在文本编辑器中查看 .sol 文件时,我会看到更多未翻译的代码以及其他组和房间值,一旦我使用包含查询字符串的 URL 访问应用程序。

我在网上没有找到任何关于此的内容,但这可能只是由于缺乏必要的搜索技能。

有没有其他人遇到过类似的事情?或者你知道如何解决这个问题吗?

我已经尝试将 Security.exactSettings 设置为 false,我真的希望这会奏效。

4

2 回答 2

0

要记住的一件事: - 它们是共享的 - 但有延迟。如果您获得共享对象并对其进行更改,则更改将在延迟后写入客户端 .sol。

另外,我注意到对于某些客户端(尤其是 Vista),在应用程序状态的早期访问 ShraedObjects 会引发异常。如果您稍后再试一次,通常会成功。

于 2009-02-24T22:14:35.777 回答
0

听起来您在登录过程中正确地写入了共享对象,但是当用户在使用应用程序时更改房间/组时,没有正确地将房间/组写入共享对象。

这就是为什么如果他们从未使用房间/组参数进入应用程序的值将为空,以及为什么这些值不能反映登录过程后发生的变化。

此外,为了确保在写入值后将值保存到磁盘,您可以调用mySharedObject.flush().

于 2009-11-18T06:21:50.787 回答