asp.Net   发布时间:2022-04-07  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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-mvc – 获取ActionName,ControllerName和AreaName,并将其传递给ActionFilter属性全部内容,希望文章能够帮你解决asp.net-mvc – 获取ActionName,ControllerName和AreaName,并将其传递给ActionFilter属性所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: