我想在Area RouthData
中获得AuthorizationHandlerContext
。
我找到了这个答案fetch area from the RouteData,所以我需要像
AuthorizeCore
public class ActionAuthorizeAttribute : AuthorizeAttribute {
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;
}
}
但是不幸的是,我遇到了这个错误
'ActionAuthorizeAttribute.AuthorizeCore(HttpContextBase)':找不到适合的方法
如何正确覆盖AuthorizeCore?
答案 0 :(得分:0)
该错误是因为AuthorizeCore
上没有AuthorizeAttribute
方法要覆盖。您可以view the source看到情况确实如此。
现在,ASP.NET Core中的情况有所不同,您很有可能引用了适用于ASP.NET MVC的代码。现在,AuthorizeAttribute
现在基本上只是授权中间件的抓手,而不是拥有自己的任何直接功能。
我不确定您最终要达到什么目的,但是如果您要尝试基于路由数据之类的自定义授权,则实际上应该使用policy auth而不是尝试继承AuthorizeAttribute
的子类。