AuthorizeAttribute Повторное использование - PullRequest
0 голосов
/ 03 апреля 2012

Я защищаю свои контроллеры MVC с помощью AuthorizeAttributes.Есть ли способ создать эти классы самостоятельно?

На данный момент у меня есть классы 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 ]

2 голосов
/ 03 апреля 2012

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

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

1 голос
/ 03 апреля 2012

Конечно, вы можете создать экземпляр AuthorizeAdmin и позвонить на него OnAuthorization.Хотя работать с AuthorizationContext будет грязно.Почему бы не перевернуть это ... положить вашу бизнес-логику в IsAdmin и AuthorizedAdmin использовать это?

...