2012-04-03 25 views
-1

我使用AuthorizeAttributes來保護我的MVC控制器。有沒有辦法自行實例化這些類?AuthorizeAttribute重用

目前我有一個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類是更爲複雜和重複的功能。

感謝

回答

1

當然,你可以實例AuthorizeAdmin並在其上調用OnAuthorization。但是,與AuthorizationContext一起工作會很麻煩。爲什麼不把這個翻轉過來......把你的業務邏輯放在IsAdmin之內並且有AuthorizedAdmin那麼用?

+0

是的,也許最好不要強迫某事。我不想要的原因是AuthorizedAdmin代碼非常簡單。不想刪除它:)或將其替換爲更復雜的代碼... – duedl0r 2012-04-03 16:09:07

2

爲什麼你需要IsAdmin?爲什麼不只有一種叫做GetAdminRole()的方法,它會從AppSettings返回角色字符串,然後使用User.IsInRole(GetAdminRole())

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

+0

IsAdmin也有一個用戶列表來處理..'users.Split(',')。MatchUser ...'。嗯..但我想你的提示..可能不壞,即使用戶的東西.. thx – duedl0r 2012-04-03 16:13:32