0

私が働いている場所には、WebFormsを使用した内部Webアプリケーション用のカスタムセキュリティ/認証メカニズムがあります。Controller現在、ASP.NET MVC 3で開発しており、WebFormのクラスと同じように、これをサポートするようにクラスを拡張したいと考えていPageます。次に、これをカスタム共有DLLにパックします。

これがMVCの将来のバージョンとの互換性の観点からどれほど安全か知りたいです。ASP.NET MVC 4.0が来年リリースされた場合、カスタムコントローラークラス(ASP.NET MVC 3.0コントローラークラスを参照)はMVC 4.0アプリで引き続き機能しますか?

Controller特定のMVCバージョンに依存せずに何らかの方法でを拡張する方法はありますか?


これの複製ではありません: Asp.NETMVC3コントローラークラスの拡張

4

2 に答える 2

1

問題は、バージョン固有のSytem.Web.Mvcへの参照を最初に追加する必要がある「Controller」クラスから継承することです。

ASP.NET MVCの各バージョンには、独自のDLLがあります。ASP.NETMVC3用に設計されたカスタマーDLLをMVC4プロジェクトで使用することはできません。

これで、Controllerから継承するクラスを作成し、それをASP.NET MVCプロジェクトに含めることができます。プロジェクトのバージョンが変更されると、「Controller」への参照も変更されますが、これは、プロジェクトにバージョンへの参照があるためです。

于 2012-06-14T20:56:40.790 に答える
0

あなたが求めているものとはまったく異なりますが、カスタムのセキュリティ/認証メカニズムを使用している場合は、すべてのコントローラーへのアクセスを制御する AuthorizeAttribute をオーバーライドすることをお勧めします。

カスタム認証の例もたくさんあります。カスタム コントローラーから派生させると、誰かが基本クラスを追加するのを忘れるという潜在的なセキュリティ上の問題が発生する可能性があります。アプリケーションの起動時にすべてのコントローラーに AuthorizeAttribute を適用するのは普通のことです。

このアプローチの詳細については、こちらを参照してください。

セキュリティに関連しない共有メソッドの場合、コントローラーの基本クラスで何かをオーバーライドする必要がある場合を除き、基本クラス自体を拡張するのではなく、IController の拡張メソッドとしてこれらを実装できます。

于 2012-06-14T20:52:05.453 に答える