Flash和ASP.NET MVC将数据发布到服务器

时间:2011-01-27 19:02:25

标签: asp.net-mvc flash

在发布同样具有Flash组件的ASP.NET MVC HTML表单时,您将采取什么样的设计方法来获得安全性和可伸缩性(可能还有一定的工作量),如下面的场景所述?

我有一个场景,其中有一个ASP.NET MVC站点,以及一个需要用户身份验证的页面。授权访问(使用ASP.NET表单身份验证)。在该页面上有一个HTML表单。该表单还有一个Flash组件。表单有一些文本字段,Flash组件具有二进制数据,需要与HTML表单字段一起提交到服务器。当用户点击HTML表单上的提交按钮时,Flash中的表单内容和二进制数据需要作为一个原子单元的一部分提交,可以这么说。

我知道我可以使用HTML / Flash JavaScript桥接通过JavaScript或Flash组件发布表单。我甚至可以做到这两点,也许在用户点击提交时从Flash组件发布二进制数据,然后发布HTML表单内容。

根据您的经验,哪种方法可以成为发布表单的阻力最小的路径?考虑到用户身份验证和授权部分,我认为Flash比HTML更省力。那么用户认证方面呢?如果页面从Flash发布到服务器,除了标准的HTML身份验证表单之外,Flash还必须对用户进行身份验证吗?

我的Flash二进制数据通常不应超过300KB,通常更少...非常感谢任何意见/见解!

编辑: 我还清楚地记得,使用Flash 10.1时,ExternalInterface似乎在将二进制数据传输到JavaScript时无法正常工作,我误解了这一点,并且您可以轻松地将300KB或更多的二进制数据从Flash传输到随后发布的JavaScript变量到服务器?

谢谢!

1 个答案:

答案 0 :(得分:2)

这是一种做法:

  1. 通过ExternalInterface.call()让您的Flash组件调用javascript函数。
  2. 使被调用的javascript函数更改表单内的隐藏字段。
  3. 发布表单时,隐藏字段会将所需的值发送到服务器。
  4. 我想这也是最安全的方式 - 因为Flash组件与服务器通信。您需要的一切都是标准的非AJAX表格。

    修改

    抱歉,我想我应该多加注意......如果从闪存组件发送的数据太多,也许你应该将它直接发布到服务器上。

    但是,您可以使用ExternalInterface来同步整个过程。使Flash调用服务器端方法(我会使用FluorineFX,但您的意见可能会有所不同)。然后.NET将返回一个ID,这意味着它已经接收并保存了二进制数据以供将来使用。然后调用ExternalInterface将该ID设置为隐藏字段。之后,当HTML发布到服务器时,服务器端操作方法只需要使用发布的ID检索二进制数据...

    这里的问题是你最终会得到一些永远不会与任何表格帖子相关联的二进制数据...但是我猜,这只是运行一些“垃圾收集器”脚本。

    关于身份验证问题:FluorineFX确实实现了.NET authentication,并且能够检索当前登录的用户。当然,有一些issues