2016-07-05 53 views
1

在Umbraco项目中,我有一个控制器,要求用户在一个特定的角色,以及与许多子操作的视图。当访问权限不足的用户尝试访问该页面时,他们应该会看到一条错误消息。 SOFAR我创建了一个定制的授权属性是这样的:ASP.NET MVC - 如何停止呈现视图childactions上的自动回复错误

public override void OnAuthorization(AuthorizationContext filterContext) 
     { 
      if (!filterContext.HttpContext.User.Identity.IsAuthenticated) 
      { 
       filterContext.Result = new HttpUnauthorizedResult(); 
      } 
      else if (!AuthorizeCore(filterContext.HttpContext)) 
      { 
       ViewDataDictionary viewData = new ViewDataDictionary(); 
       viewData.Add("AuthenticationeError", "You do not have sufficient permissions to view this content."); 
       filterContext.Result = new ViewResult { ViewName = "~/Views/AuthError.cshtml", ViewData = viewData };     
      } 
     } 

它的工作,虽然与下面的错误。在页面加载时,视图会从安全控制器中调用三个不同的子操作,并且每次执行此操作时都会显示一个新的授权错误ViewResult。这种行为可以停止吗?我想只呈现一个错误消息,并在第一个错误后停止进一步的视图处理。此外,我希望用户留在同一页面,并尽可能避免重定向

回答

0

对于ChildAction,我最终返回了空的ContentResult。这样做的最简单的版本是:

if (filterContext.IsChildAction) 
{ 
    filterContext.Result = new ContentResult() { Content = "" }; 
} 

这不回答我原来的问题,但解决问题

相关问题