5

Content フォルダに、ユーザーが認証なしでダウンロードできないようにしたくないファイルがいくつかあります。ユーザーがアドレス バーに ...Content/{filename} と入力してファイルにアクセスできないようにするにはどうすればよいですか?

4

3 に答える 3

4

いくつかの可能性があります。1 つ目は<location>、web.config でタグを使用することです。

<location path="Content">
    <system.web>
        <authorization>
            <deny users="?" />
        </authorization>
    </system.web>
</location>

[Authorize]もう 1 つの可能性は、それらのファイルを誰もアクセスできないフォルダー (たとえば、App_Data フォルダーなど) 内に置き、属性で装飾されるそれらのファイルを提供するコントローラー アクションを用意することです。

于 2012-05-29T07:48:24.973 に答える
1

それは私にはうまくいきません。

<configuration>
    <appSettings>
    ...
    </appSettings>
    <system.web>
    ...
    </system.web>
    <system.webServer>
    ...
    </system.webServer>
    <location path="Content">
        <system.web>
            <authorization>
                <deny users="?" />
            </authorization>
        </system.web>
    </location>
</configuration>

MVC 4.0 アプリケーションを実行し、ログインとログアウトを行い、どのアプリ ページにもアクセスできませんが、次のような直接リンクでファイルにアクセスできます

http://localhost:80966/Content/Files/home.jpg
于 2013-05-21T07:35:52.293 に答える
1

1 つの方法は、IIS のコンテキストの外に置くことです。C:\inetpub\wwwroot

のようなものに変更しC:\temp\filesます。

DB にはドキュメント名に関連付けられた GUID があり、GUID を使用してファイルへのリンクを表示します。

コントローラーのアクションでは、GUID を受け入れ、ファイル名を取得してから、応答でファイルを提供します。

于 2012-05-29T07:47:22.457 に答える