[asp.net-mvc-4] ASP.NET MVC 4 Atributo de autorización personalizado con códigos de permiso (sin roles)



Answers

Aquí hay una modificación para el anterior. responder. La principal diferencia es que cuando el usuario no está autenticado, utiliza el método original "HandleUnauthorizedRequest" para redirigir a la página de inicio de sesión:

   protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {

        if (filterContext.HttpContext.User.Identity.IsAuthenticated) {

            filterContext.Result = new RedirectToRouteResult(
                        new RouteValueDictionary(
                            new
                            {
                                controller = "Account",
                                action = "Unauthorised"
                            })
                        );
        }
        else
        {
             base.HandleUnauthorizedRequest(filterContext);
        }
    }
Question

Necesito controlar el acceso a las vistas en función de los niveles de privilegio de los usuarios (no hay roles, solo niveles de privilegios para los niveles de operación CRUD asignados a los usuarios) en mi aplicación MVC 4.

Ejemplo como a continuación AuthorizeUser será mi atributo personalizado abd Necesito usarlo como a continuación.

[AuthorizeUser(AccessLevels="Read Invoice, Update Invoice")]
public ActionResult UpdateInvoice(int invoiceId)
{
   // some code...
   return View();
}


[AuthorizeUser(AccessLevels="Create Invoice")]
public ActionResult CreateNewInvoice()
{
  // some code...
  return View();
}


[AuthorizeUser(AccessLevels="Delete Invoice")]
public ActionResult DeleteInvoice(int invoiceId)
{
  // some code...
  return View();
}

¿Es posible hacer esto? ¿Cómo? Gracias por adelantado...

Chatura






Related