6

Mi sitio permite a las personas editar publicaciones. Quiero que las personas solo editen sus publicaciones. Me gustaría un atributo de autorización como:ASP.NET MVC Autorización basada en Route Params

[CanEditPost(PostId = Id)] 
ActionResult Edit(int Id) { } 

Pero parece que los parámetros de los atributos tienen que ser estáticos, lo que hace que esto sea imposible. ¿Hay alguna forma de evitar esto?

Respuesta

9

Sí.

Si crea un atributo que hereda de AuthorizeAttribute,

usted debe ser capaz de acceder a los parámetros de la ruta por:

protected override bool AuthorizeCore(HttpContextBase httpContext) 
{ 
    var postId = httpContext.Request.RequestContext.RouteData.Values["Id"]; 
    . 
    . 
    . 
} 
+2

no se supone que voy a anular 'AuthorizeCore'? – Xodarap

+0

@CD: ¿Debo confiar en las convenciones de nombres? ¿O bien pasa el nombre de la propiedad? – Xodarap

+0

@ Xodarap: Sí, no puedo pensar en otra opción, que las rutas funcionan, ¿no? –

Cuestiones relacionadas