0

ビューフォームコントローラーを呼び出すと、認証と承認のために mvc の AuthorizeCore 関数をオーバーライドします。しかし今、アクセス権を持つユーザーにレポートを表示したいレポートへのリンクを含むビューがあります。レポートのリンクを非表示にすることはできますが、直接の URL を制限することはできません。

この URL リクエスト [http://MyDomain:1426/Company/Index] で問題ありませんが、url が [http://MyDomain:1426/Reports/GrpView?OfferID=1] の場合、authorizecore メソッドには進みません (レポートのコントローラー) MVC でビューの URL をフィルター処理する方法はありますか?

4

2 に答える 2

0

Reports/GrpViewレポート機能を提供しているハンドラーが何であるかはあまり明確ではありません。[Authorize]属性で装飾し、役割を指定した場合とは異なり、ASP.NETMVCコントローラーアクションではないようです。

これがレガシーWebFormsページまたはハンドラーである場合は、の<location>セクションを使用してweb.configアクセスを制御できます。

<location path="Reports/GrpView">
    <system.web>
        <authorization>
            <!-- deny access to all users -->
            <deny users="*"/> 

            <!-- allow access to users in the "admins" role -->
            <allow roles="admins"/> 
        </authorization>
    </system.web>
</location>

属性(およびそれAuthorizeから派生するカスタム属性)は、ASP.NETMVCコントローラーアクションへのアクセスを保護するためにのみ使用することを目的としています。レポートサービスにASP.NETMVCを使用していない場合、これらのメカニズムを使用することはできません。

于 2012-10-08T13:33:10.423 に答える
0

私のレポートは .aspx ページにあり、それをレポート ビュー フォルダーに配置しました (悪いアプローチ)。darin dimitrov が言うように、この ASPX ページが Views フォルダーにあるのはなぜですか? このフォルダー内のファイルは、コントローラー アクションでのみ提供できます。そこに従来の WebForms ページを配置することはできません。したがって、[Authorize(Roles="admins")] 属性で修飾できる GrpView というアクションを含む ReportsController というコントローラーが必要です。一方、これが従来の WebForms ページである場合は、Views フォルダーから移動して、そのパスを指定する必要があります。このアプローチを使用すると、呼び出しフォームの AuthorizeCore 関数を渡すことができません。

/// .aspx ページでロール権限管理を処理します。誰かが他の解決策を見つけたら、共有してください。

于 2012-10-09T13:05:37.770 に答える