在ASP.NET MVC核心身份中覆盖AuthorizeCore

时间:2018-10-01 10:52:15

标签: asp.net-mvc asp.net-identity asp.net-core-2.1

我想在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?

1 个答案:

答案 0 :(得分:0)

该错误是因为AuthorizeCore上没有AuthorizeAttribute方法要覆盖。您可以view the source看到情况确实如此。

现在,ASP.NET Core中的情况有所不同,您很有可能引用了适用于ASP.NET MVC的代码。现在,AuthorizeAttribute现在基本上只是授权中间件的抓手,而不是拥有自己的任何直接功能。

我不确定您最终要达到什么目的,但是如果您要尝试基于路由数据之类的自定义授权,则实际上应该使用policy auth而不是尝试继承AuthorizeAttribute的子类。