2011-01-27 80 views
1

在發佈也包含Flash組件的ASP.NET MVC HTML表單時,您將採取什麼樣的設計方法來提高安全性和可伸縮性(以及可能的工作量)下面的情況?Flash和ASP.NET MVC將數據發佈到服務器

我有一個場景,其中有一個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變量,然後發佈到服務器?

謝謝!

回答

2

這就是做這件事的一種方法:

  1. 讓你的閃光燈組件調用javascript函數通過ExternalInterface.call()
  2. 使被調用的javascript函數更改窗體內的隱藏字段。
  3. 當表單發佈時,隱藏字段會將所需的值發送到服務器。

我想這也是最安全的方式 - 由於Flash組件將而不是與服務器通信。您需要的一切都是標準的非AJAX表單文章。

編輯

對不起,我想我應該更加重視......如果從閃存組件發送的數據太多,也許你應該直接發佈到服務器。

不過,您可以使用ExternalInterface來同步整個過程。使Flash調用服務器端方法(我會使用FluorineFX,但您的意見可能會有所不同)。然後,.NET將返回一個ID,這意味着它已經收到並保存了二進制數據供將來使用。然後調用ExternalInterface將該ID設置爲隱藏字段。之後,當HTML發佈到服務器時,服務器端操作方法只需要使用發佈的ID檢索二進制數據...

這裏的問題是,您最終會得到一些二進制數據將永遠不會被關聯到任何形式的帖子......但是,沒關係,我想,只是不時運行一些「垃圾收集器」腳本。

關於認證問題:FluorineFX確實實現了.NET authentication,並且它能夠檢索當前登錄的用戶。當然,還有一些issues

+0

感謝rsenna,我明白這個方法,以及如何去做的細節。您是否嘗試過使用ExternalInterface將二進制數據傳遞給JavaScript?我沒有太多運氣。 – 2011-01-27 19:34:40