3

シナリオ

カスタムを使用して、IPrincipalasp.netIIdentity認証を行っています。を使用してイベント中にPrincipalとを設定しました。IdentityPostAuthenticateRequestIHttpModule

web.config は、おおよそ次のようになります。

<system.web>
  <authorization>
    <allow verbs="GET,POST" roles="domain\group"/>
    <deny verbs="*" users="*"/>
  </authorization>
</system.web>
<location path="~/admin/user_search.aspx">
  <system.web>
    <authorization>
      <allow verbs="GET,POST" roles="admin"/>
      <deny verbs="*" users="*"/>
    </authorization>
  </system.web>
</location>

問題

リクエストを行うと、IPrincipal.IsInRoleメソッドはチェックのために一度呼び出されますが、ロールdomain\groupをチェックするために再度呼び出されることはありません。adminこれは何が原因ですか?構文が間違っていlocationますか、それとももっと深刻な問題がありますか?

ノート

最初は、管理ディレクトリの web.config がルート ディレクトリの web.config をオーバーライドしていると思っていましたが、location要素に使用するだけでなく、完全に削除しようとしました。どちらもこれまでのところ機能していません。

4

1 に答える 1

3

<location>要素のパスの先頭にはチルダ(〜)を使用しないでください。チルダでは解釈されないためです。あなたの例では、path = "admin/user_search.aspx"が正しいはずです。

于 2009-02-24T23:44:40.910 に答える