utilizo un AuthorizationFilter personalizado como los siguientes:Obtener ActionName, ControllerName y AreaName y pasarlo en ActionFilter Atributo
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);
}
}
que utilizan este filtro en la parte superior de cada acción que tengo, y para el check está autorizado, necesita Nombre de la acción, Nombre del controlador y Nombre del área. Entonces, ¿hay alguna manera de obtener estos nombres en el método AuthorizeCore()
como usar System.Web.HttpContextBase
? si la respuesta es NO, ¿cómo puedo conseguir este nombres y pasarlo al atributo, obviamente, no quiero añadir cada nombre con la mano, en realidad algo así como ViewContext.RouteData.Values["Controller"]
en los controladores:
[ActionAuthorize(actionName=Action, controller=ControllerName, area=AreaName)]
public ActionResult Index() {
return View();
}
¿Alguien tiene alguna idea al respecto?
"Se podría buscarlos desde el RouteData" ¿No es una buena respuesta. ** Ahora ** fue editado, voy a revertir. – gdoron
Esto podría ser solo en ASP.NET MVC 4, pero el área se encuentra en rd.DataTokens ["area"]. –
Debe cambiar la línea var rd = httpContext.Request.RequestContext.RouteData; a var rd = HttpContext.Current.Request.RequestContext.RouteData; mejor usar el estándar que un parámetro :) –