我目前有2個過濾器,Auth和Redirect,它們執行以下操作:Filter Auth(實現IAuthorizationFilter和ActionFilter)檢查用戶登錄和授權,如果失敗,則將filterContext.Result設置爲403(禁止)的HttpStatusCodeResult 。過濾器重定向(實現IActionFilter和ActionFilter)檢查結果,如果它是403,則重定向到登錄頁面。ASP.NET MVC操作篩選器:在篩選器中設置filterContext.Result可防止執行其他篩選器?
我有他們施加到動作如下:
[Auth(Order=0)]
[Redirect(Order=1)]
然而,驗證被執行但重定向從未被執行(未它提供的4種覆寫投放方法之一)。如果我刪除認證重定向獲取執行,但如果我包含認證作爲第一個過濾器,重定向不會執行。我想設置過濾器上下文的Result屬性會阻止任何其他過濾器被執行,但我不能實現這種情況。僅供參考我正在使用ASP.NET MVC 3測試版,但這不應該改變任何東西。
更新:將Auth的過濾器類型更改爲IActionFilter而不是IAuthorizationFilter會導致重定向中的OnResultExecuting和OnResultExecuted觸發,但更改Response對瀏覽器的最終響應沒有任何影響。
的HttpStatusCodeResult沒有最終會被重定向,它只是告訴ASP.NET MVC服務了一個響應指定的狀態碼。 – Diego 2010-10-29 23:51:12