0

AuthorizeASP MVC3 アプリでクラスを使用しようとしています。残念ながら、ビジネス ルールによりRoles、web.config からプルする必要がありますが、これにより次の例外がスローされます。

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

これが私が参照しているコードです。

[Authorize(Roles = ConfigurationManager.AppSettings.Get("user"))]
public class AdminController : Controller
{

userこれが私のweb.configのセクションです

<add key="user" value="SA\\Application.MortalityConcentrationRA.Dev.Users" />
4

2 に答える 2

2

次のようなカスタム承認属性を作成してみてください。

public class MyAuthorizeAttribute : AuthorizeAttribute
    {
        public MyAuthorizeAttribute()
        {
            this.Roles = ConfigurationManager.AppSettings["user"];
        }

        protected override bool AuthorizeCore(HttpContextBase httpContext)
        {
            return base.AuthorizeCore(httpContext);
        }
}

そして、次のようにコントローラーで使用します。

[MyAuthorize]
public class HomeController : Controller
{
  //code here
}
于 2013-03-06T20:34:53.520 に答える
0

カスタム承認属性が必要になると思います。少し調べてみましたが、他に考えられる解決策は見つかりませんでした。現在の属性には定数が必要ですが、 config.AppSettings[] を定数値にする方法がわかりません(定義上、定数ではありません)。

あなたがする必要があることをほぼ正確に説明しているこのSO投稿を見てください。あなたの質問は、これとほぼ同じです (これはあなたにとって良いことです。既に回答があります)。

于 2013-03-06T20:23:56.927 に答える