AuthorizeAttribute重用

时间:2012-04-03 15:40:50

标签: c# asp.net-mvc-3 code-reuse authorize-attribute

我用AuthorizeAttributes保护我的MVC控制器。有没有办法自己实例化这些类?

目前我有一个AuthorizedAdmin和一个IsAdmin类来做同样的事情。理想情况下,IsAdmin应该使用AuthorizedAdmin类。有没有办法做到这一点?

我问,因为AuthorizedAdmin非常简单:

[AttributeUsage(AttributeTargets.All, Inherited = true, AllowMultiple = true)]
public class AuthorizedAdmin : AuthorizeAttribute
{
    public AuthorizedAdmin()
    {
        Users = ConfigurationManager.AppSettings["ADMIN_USERS"];
        Roles = ConfigurationManager.AppSettings["ADMIN_GROUPS"];
    }
}
另一方面,

IsAdmin类更复杂并且重复了功能。

由于

2 个答案:

答案 0 :(得分:2)

为什么需要IsAdmin?为什么不让一个名为GetAdminRole()的方法从AppSettings返回角色字符串,然后使用User.IsInRole(GetAdminRole())

然后,您也可以在GetAdminRole()中使用AuthorizedAdminAttribute

答案 1 :(得分:1)

当然,您可以实例化AuthorizeAdmin并在其上调用OnAuthorization。尽管如此,使用AuthorizationContext会很麻烦。为什么不翻转这个...将您的业务逻辑放在IsAdmin并让AuthorizedAdmin使用它?