2

従業員がファイルをアップロードできるシステムがあります。3つの方法があります

パブリック、プライベート、または保護モードで自分のアカウントにアップロード パブリック、プライベート、または保護モード
で部門アカウントにアップロード パブリック、プライベート、または保護モード
で組織アカウントにアップロード

パブリックは誰でも見ることができ、グループまたは個人のみにプライベートであり、組織内の誰からも保護されます。

組織のすべてのファイルは、次のようなファイル サーバー上の /files/<organizationId>/ などのディレクトリに保存されます。

ファイル
+-- 234809
| +img1.jpg
| +doc1.pdf
+-- 808234
| +doc2.pdf

DBにファイルパスとプライバシーレベルを保存しています。そのため、特定のページでファイル URL へのリンクをユーザーに表示するかどうかを制御できます。

問題は、ファイルの URL を制御できないことです... したがって、ブラウザのアドレス バーに img1.jpg の URL を入力した場合、ログインしているユーザーが img1 を見る資格があるかどうかを知る方法がありません。 .jpg。

なにか提案を?


その Java アプリケーションです。ただし、ファイル サーバーとして機能する Glassfish の別のインスタンスがあります。アプリはまだリリースされていないため、より優れたファイル アクセス戦略を採用することにオープンです。

ファイルにアクセスしているユーザーは、ログインしている場合とログインしていない場合があります。ただし、アクセスされているファイルがプライベートまたは共有であることがわかっている場合は、常にログイン ページにリダイレクトすることでユーザーを認証できます。

ありがとう
ニシャント

4

2 に答える 2

1

あなたは興味深い質問を提起し、問題に対するあなたの理解は正しいです。

コンテンツを提供している IIS のバージョンによっては、コンテンツが vdir 内にある場合、アクセス制御さえできない場合があります。

このタイプのシナリオの典型的な解決策は、インターネットにアクセスできないディレクトリにファイルを保存し、保護されている HttpHandler を使用してファイルをストリーミングすることです。

これにはいくつかの方法があります。最も簡単な方法は、/downloads などの存在しないディレクトリにマップされた HttpHandler であり、RequestUri からファイル名を解析し、適切なコンテンツ タイプを設定して、ファイルを Response に書き込みます。

この場合、HttpHandler は保護されているため、アクセスを判断できます。

于 2010-03-21T16:51:04.323 に答える
0

パブリック フォルダーの外にファイルを格納し、組織からファイルを要求している URL をキャッチするための何らかのルートを持つことができます。その後、Web サーバーに何も制御せずにファイルを提供するのではなく、プログラムでファイルを提供できます。

于 2010-03-21T16:54:30.643 に答える