0

ASP.NET MVC2 アプリケーションの特定のコントローラーまたはアクションへのアクセスのみを許可または禁止するために、web.config または同様のものを使用することは可能ですか? Authorize 属性を介してという意味ではなく、一部のコントローラーへのアクセスを文字通り完全に禁止するという意味ですか?

私が見ているシナリオは、クライアントに ASP.NET MVC2 サイトがあり、パブリック アクション (および Authorize 属性なし) を持つ 1 つのコントローラーと、Authorize 属性を持つ他のコントローラーが多数あるというものです。このサイトはフォーム認証を使用しているため、ユーザーが非パブリック コントローラーの 1 つにアクセスしようとすると、ログインするように求められます。

クライアントはこれをさらに一歩進めて、イントラネットでは非パブリック コントローラーへのアクセスを許可し、インターネットではパブリック コントローラーのみにアクセスできるようにしたいと考えています。

できれば実際のアプリケーションのコードを変更せずに、これを行うにはどのようなアプローチがありますか? 設定が異なる2つのIISサイト\アプリで可能かもしれないと思いますか? 異なる web.config を持つアプリケーション フォルダーの 2 つのコピーが必要ですか、それとも他のオプションはありますか?

4

1 に答える 1

2

コードの変更が好ましくない場合は、リクエスト フィルタリングを使用すると、アプリケーションの特定の URL をブロックして、公開したくないコントローラー アクションに効果的にアクセスできなくなると思います。

使用方法の例を次に示します: http://www.iis.net/configreference/system.webserver/security/requestfiltering/denyurlsequences

基本的に、web.config に以下を追加する必要があります。

<system.webServer>
    <security>
        <requestFiltering>
            <denyUrlSequences>
                <add sequence="controller/action" />
                <add sequence="controller/otheraction" />
            </denyUrlSequences>
        </requestFiltering>
    </security>
</system.webServer>

このアプローチでは、ファイル システムに Web サイトの 2 つのコピーと 2 つの IIS Web サイトが必要になります。最適ではありませんが、コード変更なしの条件を満たしています。

于 2013-06-14T03:21:05.317 に答える