先贴代码
public class SellerAdminAuthorizeAttribute : AuthorizeAttribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationFilterContext context) { string controllerName = filterContext.RouteData.Values["controller"].ToString().ToLower(); string actionName = filterContext.RouteData.Values["action"].ToString().ToLower(); string areaName = filterContext.RouteData.DataTokens["area"].ToString().ToLower(); } }
简单描述一下,在站点的所有controller 打了这个特性,其中 需要通过 controller action area 几个参数,去做一些特殊逻辑, 但是代码跑到这里是RouteData 里边获取不到这几个值,count = 0。
对应到以前framework时候,是在继承了controller的基类里边, 通过 重写 OnAuthorization方法实现的, 那么在core 里边, 这个地方要如何获取这几个参数?
找到地方了
string controllerName = filterContext.ActionDescriptor.RouteValues["controller"].ToString().ToLower();
string actionName = filterContext.ActionDescriptor.RouteValues["action"].ToString().ToLower();
string areaName = filterContext.ActionDescriptor.RouteValues["area"].ToString().ToLower();