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