首页 > 解决方案 > 在 asp.net mvc 核心标识中覆盖 AuthorizeCore

问题描述

我想Area RouthData进去AuthorizationHandlerContext
我从 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 ?

标签: asp.net-mvcasp.net-identityasp.net-core-2.1

解决方案


该错误是因为没有AuthorizeCore方法AuthorizeAttribute可以覆盖。你可以查看源码看清楚是这样的。

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

我不确定您最终要达到什么目标,但是如果您尝试根据路由数据之类的内容进行自定义授权,那么您实际上应该为此使用策略身份验证,而不是尝试子类化AuthorizeAttribute.


推荐阅读