asp.net-mvc – 获取ActionName,ControllerName和AreaName,并将其传递给ActionFilter属性

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – 获取ActionName,ControllerName和AreaName,并将其传递给ActionFilter属性前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用自定义AuthorizationFilter如下:
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?如果回答是否,那么如何获得这个名称并将其传递给属性,显然我不想手动添加每个名称,实际上是在控制器中的likeViewContext.RouteData.Values [“控制器”

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

有人有什么想法吗?

解决方法

您可以从RouteData中获取它们:
protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
{
    var rd = httpContext.Request.RequestContext.RouteData;
    string currentAction = rd.GetrequiredString("action");
    string currentController = rd.GetrequiredString("controller");
    string currentArea = rd.Values["area"] as string;

    ...

}

猜你在找的asp.Net相关文章