0

ユーザーがフォーム認証を使用してログインするサイトがあり、特定のフォルダー内のファイルへのアクセスを特定のユーザーに制限したいと考えています。

したがって、たとえば、フォルダdir/fooにはアクセスできますが、またはにはアクセスできuser1ません。フォルダにはアクセスできますが、またはにはアクセスできません。user2user3dir/baruser2user1user3

上記のフォルダーは、サイトを展開した時点では作成されていません。それらはWebサイトのライフサイクル全体で作成され、コード(ファイルの名前)を通じて、誰がどのファイルにアクセスできるかを知ることができます。

私の設定では、の役割を持つユーザーが何人かいますMember。AMemberは会社を表します。それぞれに、、およびMemberの役割を持つユーザーがいます。これで、各ユーザーは、、、、または自分の会社に属するドキュメントを表示できるはずです。したがって、ドキュメントがある場合は、それを表示できる必要があり、それを表示できる必要があります(所属する会社です)、表示できる必要があります(に属します)、表示できる必要があります(に属します) 、しかしそれを見ることができないはずです(彼がに属している場合SellerBuyerViewerMemberSellerBuyerViewerSeller1a.txtSeller1Member1Member1Seller1Buyer1Member1Viewer1Member1Buyer2Member2)。ドキュメントは、ドキュメントが属するユーザーの名前にちなんで名付けられたフォルダーに配置されます。たとえば、に属するドキュメントSeller1は、というフォルダにありますSeller1Adminまた、すべてのドキュメントを表示できるというユーザーがいます。

これどうやってするの?

4

1 に答える 1

2

これは、web.configファイルで行います。ユーザーをグループに編成した方がよいでしょうが、ユーザーごとに行うことは可能です。

<configuration>
    <system.web>
        <authorization>
            <!-- GLOBAL authorization -->
            <allow users="user1" />
            <deny users="user2, user3"/>
            <allow roles="GoodUsers" />
            <deny roles="BadUsers, MouthBreathers"/>
        </authorization>
    </system.web>
    <!-- local individual folder/file authorization
    <location path="/dir/foo">
        <system.web>
            <authorization>
                <allow users="user1" />
                <deny users="user2, user3"/>
                <allow roles="GoodUsers" />
                <deny roles="BadUsers, MouthBreathers"/>
            </authorization>
        </system.web>
    </location>
</configuration> 

編集: ドキュメント管理の側面を追加する更新された説明と、会社をミックスに追加する追加のフィルターを考えると、それを行うにはいくつかの方法があります。私が提案する主な方法は、すべてのドキュメントをルートフォルダーの外に置いて、ランダムなユーザーが閲覧できないようにすることです。次に、検索機能を提供するページベースのインターフェイスを構築します。フォルダ/ドキュメントの数に応じて、これはさまざまな方法で実行できます。フォルダーあたりのドキュメント数が少ない場合(フォルダーあたり1000未満、フォルダー1000未満)、システムにファイルシステムに直接アクセスさせて、これらのファイルリストへの読み取りアクセスを提供することができます。これ以上ある場合は、これらのファイルを簡単に検索できるデータベースにインデックス付けするための外部メカニズムを用意することをお勧めします。

最後に、ファイルをユーザーに提供するために、特定のファイルをフェッチしてバイナリストリームとして提供するという特定の責任を持つ2番目のページを作成します。

于 2012-05-24T13:58:58.370 に答える