Atributo Autorización personalizada de ASP.NET MVC 4: ¿cómo redirigir a los usuarios no autorizados a la página de error?

Estoy usando un atributo de autorización personalizado para autorizar el acceso de los usuarios en función de sus niveles de permiso. Necesito redirigir a los usuarios no autorizados (por ejemplo, el usuario intenta eliminar una factura sin eliminar el nivel de acceso) para acceder a la página denegada.

El atributo personalizado está funcionando. Pero en el caso de acceso de usuarios no autorizados, no se muestra nada en el navegador.

Código de control.

public class InvoiceController : Controller { [AuthorizeUser(AccessLevel = "Create")] public ActionResult CreateNewInvoice() { //... return View(); } [AuthorizeUser(AccessLevel = "Delete")] public ActionResult DeleteInvoice(...) { //... return View(); } // more codes/ methods etc. } 

Código de clase de atributo personalizado.

 public class AuthorizeUserAttribute : AuthorizeAttribute { // Custom property public string AccessLevel { get; set; } protected override bool AuthorizeCore(HttpContextBase httpContext) { var isAuthorized = base.AuthorizeCore(httpContext); if (!isAuthorized) { return false; } string privilegeLevels = string.Join("", GetUserRights(httpContext.User.Identity.Name.ToString())); // Call another method to get rights of the user from DB if (privilegeLevels.Contains(this.AccessLevel)) { return true; } else { return false; } } } 

Apreciar si puedes compartir tu experiencia sobre esto.

HandleUnauthorizedRequest anular la HandleUnauthorizedRequest como se especifica aquí .

 public class CustomAuthorize: AuthorizeAttribute { protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)    {        if(!filterContext.HttpContext.User.Identity.IsAuthenticated)        {            base.HandleUnauthorizedRequest(filterContext);        }        else        {            filterContext.Result = new RedirectToRouteResult(new            RouteValueDictionary(new{ controller = "Error", action = "AccessDenied" }));        }    } } 

** Nota: statement condicional actualizada Jan ’16