我用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
类更复杂并且重复了功能。
由于
答案 0 :(得分:2)
为什么需要IsAdmin
?为什么不让一个名为GetAdminRole()
的方法从AppSettings
返回角色字符串,然后使用User.IsInRole(GetAdminRole())
?
然后,您也可以在GetAdminRole()
中使用AuthorizedAdminAttribute
。
答案 1 :(得分:1)
当然,您可以实例化AuthorizeAdmin
并在其上调用OnAuthorization
。尽管如此,使用AuthorizationContext
会很麻烦。为什么不翻转这个...将您的业务逻辑放在IsAdmin
并让AuthorizedAdmin
使用它?