Asp.net-Mvc
獲取 ActionName、ControllerName 和 AreaName 並傳入 ActionFilter 屬性
我使用自定義 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); } }我在我擁有的每個操作的頂部使用此過濾器,並檢查是否已授權,需要操作名稱、控制器名稱和區域名稱。那麼有什麼方法可以在
AuthorizeCore()use這樣的方法中獲取這些名稱System.Web.HttpContextBase?如果答案是否定的,那麼我如何獲取這些名稱並將其傳遞給屬性,顯然我不想手動添加每個名稱,實際上就像ViewContext.RouteData.Values["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; ... }