2012-02-15 7 views
0

現在、私は現在、1ページあたり100個までのイメージを扱うASP.NET MVC 3-WebAppを構築しています。 現時点では、Webアプリケーション自体が画像を提供しています。その理由は、許可されたユーザーとログオンしているユーザーだけがイメージをダウンロードできることを確認したいのです。このアプローチは、一方ではブラウザが画像を順番にロードし、他方ではそれほど大きくはないので、性能が悪い。 したがって、イメージとイメージのみを提供する別のホストから外部WCF-WebServiceを導入したいと思います。これはうまくいきますが、現時点では、Download-Urlを安全にする方法はわかりません。WebService経由での安全なイメージダウンロードのためのベストプラクティス

私のページでは「www.imageviewer.com」と言っています。私はそういうイメージタグをたくさん持っています: [Image-Tag] Source = "imageservice.imageviewer.com/Download/someID" [/ Image - Tag]

私は、UserIDやその他のSecurityTokensのようなダウンロードURL内に暗号化されたセキュリティ情報を送信して、それを使って処理することができます。しかし、これは、ユーザー(または別のユーザー)がログオンせずに別のブラウザーでイメージをダウンロードできることを妨げません。

私はセッションベースのソリューションをご希望です。 WebAppにログオンした後で有効なセッションでのみ、ブラウザはWebServiceからイメージをダウンロードする必要があります。

これを解決する方法はありますか?

答えて

1

Webサービスは新しい正規表現ですか?

問題に直面した場合、「私は知っています、私はウェブサービスを使用します」と思う人もいます。今、彼らには2つの問題があります。

ウェブサービスが画像をより高速に読み込む方法を記述してください。よりオーバヘッド(XML(unpack)、別のコード層の追加)があり、WebサービスはHTTPリクエストではなく、ブラウザが画像を要求するときに行うもので、ブラウザの制限接続。

ブラウザは実際に画像をロードするのではなく、同じドメインに対してabout two to eight at a timeの割合で画像をロードします。

Loading the images from different subdomainsが一般的なアプローチであり、lazy loadingを追加するとさらに高速化されます。セッション、Cookie、またはヘッダーに格納されている情報を使用して、セキュリティを確保できます。

一方、あなたの質問への回答と丁寧なアドバイスが必要な場合:Custom User Name and Password Validatorでサービスを保護するだけで、既知のユーザーの資格情報を検証するためのバリデーターを単純にオーバーライドできます。

+0

私は他のリソースから画像をダウンロードすることをテストしました。これは、Webサービスであるかどうかにかかわらず、「高速な」ユーザーエクスペリエンスを提供します。なぜなら、ブラウザは、ブラウザが現在のページのダウンロード+レンダリング+ JS処理を終了する前に、別のリソースから画像をダウンロードし始めるからです。多分私は完全に間違っています。 –

+0

別のサブドメインから画像を読み込むのが遅い場合、セッション情報を共有するにはどうすればいいですか?私の頭に浮かぶのはアウトオブプロセスまたはSqlServerセッションを使用することだけです。しかし、私はそれを避けたかった。 –

+0

@StevenGrigoleitあなたの最初のコメントは「別のリソース」と言います。それはブラウザが接続を処理する方法のために読み込み速度が速くなる別の(サブ)ドメインです。さらに、IISの同じWebサイトからサブドメインを提供できるため、セッションや構成などのすべてのデータを共有できます。接続文字列とそれ以外のもの)。 – CodeCaster

関連する問題