3
我想能如果路由約束失敗重定向,而不是隻返回一個404.這是該方案:路由約束重定向
- 用戶點擊頁面www.test.com/preview/home/
- 路由約束檢查他們是否可以預覽頁面
- 如果沒有,重定向到www.foo.com/home/
這可能嗎?
我想能如果路由約束失敗重定向,而不是隻返回一個404.這是該方案:路由約束重定向
這可能嗎?
這是可能的,但沒有路由約束。路線約束不打算以這種方式使用。如果路線約束不滿足,則路線不匹配。如果你想執行一些授權和重定向,如果這個授權失敗,你最好寫一個自定義的授權屬性,並用它來裝飾你的控制器動作。
有以下兩種方式:
你想定製授權邏輯添加到現有的屬性。在這種情況下,您從AuthorizeAttribute派生並覆蓋AuthorizeCore
和HandleUnauthorizedRequest
方法來執行自定義授權和重定向(而不是導航到登錄頁面)(如果此邏輯失敗)。
您不想要任何基本功能。在這種情況下,您從FilterAttribute派生並實現IAuthorizationFilter
接口,並將您的可視化和重定向邏輯放入OnAuthorization
方法中。
下面是如何在授權邏輯使用,你必須到處訪問filterContext失敗重定向一個例子:
var values = new RouteValueDictionary(new
{
controller = "home",
action = "index"
});
filterContext.Result = new RedirectToRouteResult(values);