Получите ActionName, ControllerName и AreaName и передайте их в атрибуте ActionFilter

Я использую пользовательский фильтр авторизации, как показано ниже:

public class ActionAuthorizeAttribute : AuthorizeAttribute {

protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext) {

        if(!httpContext.User.Identity.IsAuthenticated)
            return false;

        if(IsUserExcluded())
            return false;
        else
            return IsRoleAuthorize(httpContext);
    }
}

Я использую этот фильтр в верхней части каждого действия, которое у меня есть, и для проверки авторизовано мне нужны имя действия, имя контроллера и имя области.. Итак, есть ли способ получить эти имена в методе AuthorizeCore(), например использовать System.Web.HttpContextBase? если ответ «нет», то как я могу получить эти имена и передать их атрибуту, очевидно, я не хочу добавлять каждое имя вручную, на самом деле что-то вроде ViewContext.RouteData.Values["Controller"]в контроллерах :

[ActionAuthorize(actionName=Action, controller=ControllerName, area=AreaName)]
public ActionResult Index() {
    return View();
}

. Кто-нибудь знает об этом?

35
задан Saeid 2 April 2012 в 12:44
поделиться