2

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 つの別々の場所を使用しないようにすることはできますか?

4

0 に答える 0