この問題を解決する方法の 1 つは、実際の物理パスをユーザーに公開しないことです。基本的に、コントローラ アクションから SWF ファイルを配信する必要があります。
object タグを介して SWF ファイルを埋め込む場合、object タグはファイル名を渡すこのアクションを参照します。属性またはその他の方法でアクションを制御できAuthorize
ます。リクエストが適切に承認されていることを確認したら、フラッシュ ファイルをレスポンスに書き込みます。
コードはPHPにありますが、アイデアはここで明確に説明されていますが、それをMVCに移行できます。
アップデート:
SWF ファイル パスを変更したくない場合は、Global.asax.cs でもう少し作業を行う必要があります。
routes.IgnoreRoute("Javascript/{*catchall}");
routes.IgnoreRoute("Content/{*catchall}");
routes.IgnoreRoute("Scripts/{*catchall}");
routes.RouteExistingFiles = true;
routes.MapRoute("", "Files/Flash/{file}", new { controller = "File", action = "Flash" });
パスを知って SWF ファイルに直接アクセスしようとしても、要求はコントローラーのFlash
アクションによって処理され、File
そこで必要な認証を行うことができます。SWF を返送する前に確認してください。