0

我正在尝试Authorize在我的 ASP 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 回答