ASP.NET MVC-如何停止视图子级的呈现身份验证错误时的操作
在一个Umbraco项目中,我有一个控制器,它要求用户扮演一个特定的角色,还有一个包含许多子操作的视图。当访问权限不足的用户尝试访问页面时,他们应该会看到错误消息。到目前为止,我已经创建了一个自定义的Authorize属性,如下所示:ASP.NET MVC-如何停止视图子级的呈现身份验证错误时的操作,asp.net,asp.net-mvc,authorization,Asp.net,Asp.net Mvc,Authorization,在一个Umbraco项目中,我有一个控制器,它要求用户扮演一个特定的角色,还有一个包含许多子操作的视图。当访问权限不足的用户尝试访问页面时,他们应该会看到错误消息。到目前为止,我已经创建了一个自定义的Authorize属性,如下所示: public override void OnAuthorization(AuthorizationContext filterContext) { if (!filterContext.HttpContext.User.I
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。这种行为能被制止吗?我只想呈现一条错误消息,并在第一个错误后停止进一步的视图处理。另外,我希望用户保持在同一页面上,如果可能的话避免重定向,因为ChildAction我最终返回了空内容结果。最简化的版本是:
if (filterContext.IsChildAction)
{
filterContext.Result = new ContentResult() { Content = "" };
}
这并没有回答我原来的问题,但解决了问题对于ChildAction,我最终返回了空的ContentResult。最简化的版本是:
if (filterContext.IsChildAction)
{
filterContext.Result = new ContentResult() { Content = "" };
}
这并没有回答我原来的问题,但解决了问题