1
斷裂鏈我有2個動作過濾器:如何操作篩選
[Auth]
[Check]
public ActionResult Home()
{
//...
}
我需要設置CheckAttr的第一部作品,打破AuthAttr。
我不記得該怎麼做。請幫幫我。
例如:
請求採取行動首頁 - >第一部作品驗證過濾器和邏輯我需要重定向到另一個動作
斷裂鏈我有2個動作過濾器:如何操作篩選
[Auth]
[Check]
public ActionResult Home()
{
//...
}
我需要設置CheckAttr的第一部作品,打破AuthAttr。
我不記得該怎麼做。請幫幫我。
例如:
請求採取行動首頁 - >第一部作品驗證過濾器和邏輯我需要重定向到另一個動作
你可以短路通過設置filterContext
的Result
財產整個執行:
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
filterContext.Result = new JsonResult
{
Data = "hello",
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
在這個例子中,我已經回到一個JsonResult,但你可以回到你喜歡的任何的ActionResult:的ViewResult,PartialViewResult,RedirectToRouteResult,...
一旦分配了Result屬性,將不會爲此上下文執行更多過濾器。行動執行本身也將被短路。
還要記住,如果你的行動過濾器由同一類型派生沒有保證的次序,除非你手動分配上他們每個人的Order
財產將被執行。當然,如果它們是不同類型的,例如IAuthorizationFilter
或IActionFilter
,很明顯授權過濾器將在任何操作過濾器之前運行。這是設計。
另一方面,如果您只是試圖阻止其他操作過濾器執行,但操作本身應該執行,恐怕沒有辦法實現這一點,您將不得不重新考慮這些過濾器的設計。
如何使用自定義消息將ActionExecutingContext設置爲http 401錯誤? –