Yo escribo una aplicación ASP.NET MVC 3 y que tiene una serie de funciones:ASP.NET MVC 3 personalizada Autorización
Sistema de administración, administración de atención al cliente, propietario de Presupuesto, App propietario
Sé que Puedo restringir fácilmente el acceso a ciertos controladores (y métodos de acción) usando el atributo [Autorizar (Roles = "...")].
Sin embargo, parte de la autorización no se basa únicamente en la función, sino en los permisos. Por ejemplo, los propietarios del presupuesto solo deberían poder acceder a los presupuestos asignados a su centro de costos, no a los presupuestos de otras personas.
En la actualidad tengo algo de código dentro de los métodos de acción para comprobar esto:
if(UserCapabilities.CanAccessBudget(budgetId))
{
// get budget and show view
}
else
{
// redirect to index action
}
Esto está empezando a hacer mi código desordenado y hacer la comprobación de seguridad en una pesadilla - ya que tengo muchos métodos de acción que necesitan estos diferentes tipos de verificaciones de autorización.
Una idea que he tenido es escribir algunos atributos a medida que puedo usar para decorar mis métodos de acción y limpiar mi código:
//
// GET: /Budgets/View/1
[CanAccessBudget]
public ActionResult View(int id)
{
//...
}
¿Qué piensa la gente? ¿Escribir los atributos personalizados es la manera más limpia y sostenible de llevar?
dang ... me ganaste: -/Deje de intentar responder a cualquier pregunta de .NET cuando estás en línea Darin, eheheh: P muy buen enfoque, aunque :) lo usará en mi proyecto a medida que avanzamos ! – balexandre
¡Muy bien! Con la adición de un constructor para pasar el nombre del parámetro "budgetId", será perfecto. – gw0