ReportViewer コントロールを使用して SSRS と統合する必要がある MVC サイトがあります。これは、特にレポートを処理するために、サイト内に Web フォーム ページが必要であることを意味します。ありがたいことに、これはかなり無痛です。ただし、私の認証/承認の管理方法には、少し問題があります。
AuthorizeAttribute現在、すべてのコントローラにグローバル フィルタを適用しています。AllowAnonymous次に、Login コントローラーの適切なメソッドを属性で装飾しました。
これは Web フォーム ページには影響しませんが、匿名ユーザーは Web フォーム ページに直接移動できます。
web.config 内で、次のことを試しました。
<system.web>
    <authorization>
        <deny users="?"/>
    </authorization>
    <authentication mode="Forms">
      <forms loginUrl="login/index" defaultUrl="home/index"/>
    </authentication>
    ...etc...
</system.web>
ただし、これは MVC 内のログイン メソッドに適用される属性よりも優先AllowAnonymousされるため、常にログイン ページにリダイレクトされます。
location以下のようにタグを使用するように構成を変更すると、正常に動作します。
<location path="Reports.aspx">
  <system.web>
    <authorization>
      <deny users="?"/>
    </authorization>
  </system.web>
</location>
<system.web>
  <authentication mode="Forms">
    <forms loginUrl="login/index" defaultUrl="home/index"/>
  </authentication>
  ...etc...
</system.web>
これは正しい方法ですか? それとも、認証設定を管理するために 2 つの別々の場所を使用しないようにすることはできますか?