8

各承認タイプにそれぞれ使用されるコントローラーのセットがあります。たとえば、クラス A の承認には、それぞれがクラス A の承認を必要とする一連のコントローラーがあります。[Authorize(Role="Class A")]各コントローラーを同じ属性で装飾することなく、これらのコントローラーのそれぞれに適用される1 つの属性をどこかに配置する方法はありますか?

4

5 に答える 5

11

ベースコントローラーから派生したコントローラーを初期化できます。つまり、コントローラーの基本クラスに属性を配置し、内部の各コントローラーが基本クラスから派生するようにします。

[Authorize(Role="Class A")]
public class CustomBaseController : Controller{}

public class AController: CustomBaseController{}

public class BController: CustomBaseController{}
于 2012-03-22T21:41:41.883 に答える
4

ここでの2つまたは3つの応答は、その方法を説明しています...ただし、Fluent Securityを使用して、すべてのコントローラーとアクションのセットアップを1つのファイルで処理することもできます。いくつかの利点(彼らのウェブサイトから):

コードベースの構成

コードを乱雑にする属性やxmlはありません。

低インプリント

Fluent Securityは、アプリケーションで山火事のように広がることはありません。構成は単一のファイルに保持できます。

于 2012-03-22T22:27:05.590 に答える
4

はい、方法はありますA-class。1つのベースコントローラーから派生したすべてのコントローラーを作成し、その上に配置しますAuthorizeAttribute

[Authorize(Role="Class A")]
public class AController : Controller 
{
    ...
} 

public class AFirstController : AController // Gets it's parent attribute
{
    ...
} 

public class ASecondController : AController // Gets it's parent attribute
{
    ...
} 
于 2012-03-22T21:38:05.960 に答える
3

次のようなベースコントローラから継承できます。

[Authorize(Role = "Class A")]
public class ClassARequiredController : Controller {}

そうでなければ、あなたはグローバルフィルターを見ているでしょう、そしてあなたの質問によって私はあなたが複数の役割とセットを持っていると思います、それで私はグローバルフィルターがあなたのためではないと思います。

于 2012-03-22T21:38:02.370 に答える
2

基本クラスに属性を設定して継承し、シナリオに最適な階層を作成します...

于 2012-03-22T21:37:26.377 に答える