Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 路由约束重定向_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc Routing - Fatal编程技术网

Asp.net mvc 路由约束重定向

Asp.net mvc 路由约束重定向,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc Routing,如果路由约束失败,我希望能够重定向,而不仅仅是返回404。以下是场景: 用户点击网页www.test.com/preview/home/ 路由约束检查是否可以预览页面 如果没有,请重定向到www.foo.com/home/ 这是可能的吗?这是可能的,但不受路线限制。管线约束不打算以这种方式使用。如果不满足管线约束,则管线不匹配。如果您想执行一些授权,并在该授权失败时重定向,最好编写一个自定义授权属性,并用它装饰控制器操作 有两种可能性: 您希望向现有属性添加自定义授权逻辑。在这种情况下,您从

如果路由约束失败,我希望能够重定向,而不仅仅是返回404。以下是场景:

  • 用户点击网页www.test.com/preview/home/
  • 路由约束检查是否可以预览页面
  • 如果没有,请重定向到www.foo.com/home/

这是可能的吗?

这是可能的,但不受路线限制。管线约束不打算以这种方式使用。如果不满足管线约束,则管线不匹配。如果您想执行一些授权,并在该授权失败时重定向,最好编写一个自定义授权属性,并用它装饰控制器操作

有两种可能性:

  • 您希望向现有属性添加自定义授权逻辑。在这种情况下,您从AuthorizeAttribute派生并重写
    AuthorizeCore
    HandleUnauthorizedRequest
    方法,以在该逻辑失败时执行自定义授权和重定向(而不是导航到登录页)

  • 您不需要任何基本功能。在这种情况下,您从FilterAttribute派生并实现
    IAuthorizationFilter
    接口,并将您的auhorization和重定向逻辑放入
    OnAuthorization
    方法中

  • 下面是一个示例,说明了如果授权逻辑失败,如何使用您在任何地方都可以访问的filterContext重定向:

    var values = new RouteValueDictionary(new
    {
        controller = "home",
        action = "index"
    });
    filterContext.Result = new RedirectToRouteResult(values);