2009-07-29 15 views
3

定数式を使用して属性:ロールの名前がデータベースに保持されているので、私はしたいと思いますどのようにこれまで承認は、私は次の操作を行うことができます私のコントローラのための承認を設定しようとしています

[Authorize(Roles = "Approver")] 

以下を試してみてください:

[Authorize(Roles = Settings.Instance.RoleEmployee)] 

が、私は次のエラーを取得:

An attribute argument must be a constant expression, typeof expression or array creation expression of an attribute parameter type

アンをこれはどう? "従業員" は知ら役割である場合

答えて

1
+0

これらのリンクは、どちらも非常に困難または不可能であることを示しています。独自の認可属性([AuthorizeApprover]など)を作成して代わりに使用することで、これを行うのは比較的簡単です(合計5行)。しかし、あまりスケーラブルではありません。 –

0
public class UniqueAttribute : ValidationAttribute 
{   
    public string Identifier { get; set; } 

    public override bool IsValid(object value) 
    {   
     // Get property value 
     PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(value); 
     string identifierValue = properties.Find(this.Identifier,  true).GetValue(value).ToString(); 
    } 
} 

あなたは

[UniqueAttribute(Identifier = "Id")] 
0

上、このような任意のプロパティの値を取得します、そして、これを定義アプリケーションで文字列定数を使用し、データベースに格納されているロールをt必要に応じて彼の価値。

関連する問題