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


1 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);
        }
    }
asp.net-mvc-4 authorization custom-attributes

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