使用区域失败的RedirectToRouteResult

时间:2015-06-19 07:14:55

标签: c# asp.net-mvc asp.net-mvc-areas asp.net-mvc-filters

我正在使用自定义过滤器检查特定操作的用户访问权限,我有一个名为Admin的区域。当过滤器重定向未授权用户时,其重定向内部区域但不重定向到路径目录中的视图 例如,当我访问http://localhost/admin/roles时,我希望未经授权的用户会被重新启动到http://localhost/authorized,但不会像现在那样被http://localhost/admin/authorized。 以下是我使用过滤器的方法:

   public override void OnAuthorization(AuthorizationContext filterContext)
        {
            DigitalHubOnlineStoreEntities db = new DigitalHubOnlineStoreEntities();
            RbacUser requestingUser = new RbacUser();
            var controllerid = RbacUser.GetControllerId(filterContext.ActionDescriptor.ControllerDescriptor.ControllerName);
            var actionid = RbacUser.GetActionId(filterContext.ActionDescriptor.ActionName, controllerid);          
            if (!requestingUser.GetUserPermission(HttpContext.Current.User.Identity.Name, actionid, controllerid))
            {
                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { { "action", "Index" }, { "controller", "Unauthorized" } });
            }
        }

1 个答案:

答案 0 :(得分:10)

您需要使用en empty string指定Area

filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary
                       {
                           { "action", "Index" },
                           { "controller", "Unauthorized" },
                           { "Area", String.Empty }
                       });
相关问题