如果路由约束失败,我希望能够重定向,而不仅仅是返回 404。这是场景:
- 用户点击页面 www.test.com/preview/home/
- 路由约束检查是否可以预览页面
- 如果没有,请重定向到 www.foo.com/home/
这可能吗?
如果路由约束失败,我希望能够重定向,而不仅仅是返回 404。这是场景:
这可能吗?
这是可能的,但没有路线限制。路由约束不打算以这种方式使用。如果不满足路由约束,则路由不匹配。如果您想执行一些授权并在此授权失败时重定向,您最好编写自定义 Authorize 属性并用它装饰您的控制器操作。
有2种可能:
您想要将自定义授权逻辑添加到现有属性。在这种情况下,如果此逻辑失败,您从 AuthorizeAttribute 派生并覆盖AuthorizeCore
和HandleUnauthorizedRequest
执行自定义授权和重定向(而不是导航到登录页面)的方法。
您不需要任何基本功能。在这种情况下,您从 FilterAttribute 派生并实现IAuthorizationFilter
接口并将您的授权和重定向逻辑放入OnAuthorization
方法中。
这是一个使用您在任何地方都可以访问的 filterContext 如果授权逻辑失败时如何重定向的示例:
var values = new RouteValueDictionary(new
{
controller = "home",
action = "index"
});
filterContext.Result = new RedirectToRouteResult(values);