2012-04-03 2 views
-1

Я поддерживаю свои контроллеры MVC с помощью AuthorizeAttributes. Есть ли способ создать эти классы самостоятельно?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

2

Зачем вам нужен IsAdmin? Почему бы просто не вызвать метод GetAdminRole(), который возвращает строку ролей из вашего AppSettings, а затем использовать User.IsInRole(GetAdminRole())?

Затем вы можете использовать GetAdminRole() в своем AuthorizedAdminAttribute.

+0

В IsAdmin также есть список пользователей для обработки .. 'users.Split (','). MatchUser ...'. Хм .. но я думаю о твоем намеке .. наверное, неплохо даже с пользовательским материалом .. thx – duedl0r

 Смежные вопросы

  • Нет связанных вопросов^_^