5

私が取り組んでいるWebサイトの2つの部分があります。1つは通常のフォーム認証を使用し、もう1つはHMACベースの認証を使用します。フォームベースのものは通常どおり機能します(カスタムメンバーシッププロバイダーを使用する場合を除く)。

最も苛立たしいことは、デフォルトでは、フォーム認証を使用することを決定した場合、認証タグの下でルートWeb.configで指定されたloginUrlにすべての401応答をリダイレクトすることです。私のサイトのHMAC部分でこれをオフにするために、これらのコントローラーが存在する別の領域を作成しました。ただし、<authentication mode="None"></authentication>タグをどこに置いても(領域/ビューのWeb.config、Webにあるかどうかに関係なく) .configをareaフォルダーに配置したか、ルートWeb.configのlocationタグの下に配置しました(これを行うと、そのタグがそこに属していないというエラーが実際に発生します))このことですべての401のloginUrlへのリダイレクトを停止できないようです。 。

これは私の髪を引き裂くようにさせているので、どんな援助も大いにありがたいです。

ちなみに、この質問は少なくとも2 はさまざまな方法で質問されており、(実行可能な)回答はありません。私は認証モードをNoneに設定することに焦点を当てていますが、パスの役割を変更することに焦点を当てています(私の意見では、[Authorize(Roles="role1,role2,role3")]各メソッドの属性を使用する方が簡単です)。これにより、私の質問は少し異なります。これが不可能な場合は、これを行うためのより良い方法を見つけることができるように、私にも教えてください。

4

1 に答える 1

9

認証要素(ASP.NET設定スキーマ)は、アプリケーションレベルでのみ有効です。同じアプリケーションで異なる認証モードを持つことはできません。

ただし、特定の領域に場所要素(ASP.NET設定スキーマ)を指定し、その中に匿名ユーザーを許可する承認要素(ASP.NET設定スキーマ)を指定することはできます。アプリケーションの子ディレクトリの下にあるweb.configファイルに承認要素を配置することもできます。

2つの異なる認証スキームを使用するには、その領域を別のアプリケーションに変換する必要があります。必要に応じて、親アプリケーションの子になることもできますが、いくつかの注意点があります。もちろん、注意点の1つは、セッション状態が2つのアプリケーション間で共有されないことです。

また、親構成値を継承するIIS内のネストされたASP.NET'アプリケーション'を参照してください。質問とASP.NET構成ファイルの階層と継承

于 2012-12-06T00:01:25.357 に答える