3

ユーザーの役割に応じてコントローラーのメソッドが制限されているasp.net Webページの既存のコードを使用しています。

    namespace Principal.Controllers
    {
       [Authorize]
       public class MyController: Controller
       {
          [Authorize(Roles = "Role1,Role2,Role3")]
          public method1() {...}
       }
    }

問題は、許可されたロールが宣言されている部分です。

    [Authorize(Roles = "Role1,Role2,Role3")]

文字列を動的にしたいので、管理者が設定したプロパティに応じてメソッドから返すことができますが、「エラー 3 属性引数は定数式、typeof 式または属性パラメータ型の配列作成式」

どんな助けでも大歓迎です。

4

1 に答える 1

3

発見したように、属性を定義するときは定数しか使用できません。これは、属性がコードにコンパイルされるためです。コンパイラがコンパイル時に認識しない式を使用することはできません。

代わりにできることは、AuthorizeAttributeクラスから継承し、オーバーライドする新しい属性を作成することOnAuthorizeです。次に、ここでカスタム ロール ロジックを実装できます。

于 2013-04-12T16:45:49.297 に答える