ASP.NET サイトでダウンロードできるようにしたい ZIP ファイルのライブラリがあります。
ファイルは、Web ファームからアクセスできる NAS デバイスに置かれています。
最初の戦略は次のとおりです。
- IIS 仮想ディレクトリを共有ドライブのパス /zipfiles にマップします。
- URL を指定すると、ユーザーは zip ファイルをダウンロードできます。
ただし、ユーザーがファイルへのリンクを共有すると、誰でもファイルをダウンロードできます。代わりに、サイトで ASP.NET フォーム認証を使用して、ファイル転送を開始する前にユーザーの要求を検証したいと考えています。
いくつかの問題: zip ファイルの要求は、ASP.NET ではなく IIS によって処理されます。したがって、フォーム認証の対象にはなりません。さらに、ASP.NET は ASP.NET スレッドを使い果たし、大きなファイルのダウンロードには対応できないため、ASP.NET でrequest を処理する必要はありません。したがって、*.zip 要求を処理するように asp.net dll を構成することはできません。
これに関するアイデアはありますか?
私たちが投げかけた 1 つのアイデアは次のとおりです。ダウンロードの最初の要求は、ashx ハンドラーに対するものです。このハンドラーは、認証後、データベースに保存されるダウンロード トークンを生成します。次に、ユーザーは、トークンが QueryString に追加されたファイルにリダイレクトされます (例: /files/xyz.zip?token=123456789)。トークンのチェックには ISAPI プラグインが使用されます。また、トークンは x 時間後に期限切れになります。これについて何か考えはありますか?ISAPI プラグインを実装していないので、これが機能するかどうかはわかりません。
セキュリティが問題になるため、カスタム コーディングは避けたいと考えており、定評のあるソリューションを使用したいと考えています。