gpt4 book ai didi

asp.net-mvc - 获取 ActionName、ControllerName 和 AreaName 并传入 ActionFilter 属性

转载 作者:行者123 更新时间:2023-12-03 07:53:55 25 4
gpt4 key购买 nike

我使用自定义 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);
}
}

我在我拥有的每个操作的顶部使用此过滤器,对于检查是否已授权,需要操作名称、 Controller 名称和区域名称。那么有什么方法可以在 AuthorizeCore() 中获得这些名称吗?方法如使用 System.Web.HttpContextBase ?如果答案是否定的,那么我如何获得这个名称并将其传递给属性,显然我不想手动添加每个名称,实际上类似于 ViewContext.RouteData.Values["Controller"]在 Controller 中:
[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 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9976476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com