así que tengo mi método Acción¿Cómo implementar el atributo Autorizar personalizado para el siguiente caso?
[Authorize(Roles="Admin")]
public ActionResult EditPosts(int id)
{
return View();
}
En mi caso necesito para autorizar los administradores para que puedan editar mensajes, pero (aquí viene la parte buena), también necesito para permitir que el creador del mensaje para poder para editar la publicación que es un usuario normal. Entonces, ¿cómo puedo filtrar al usuario que creó la publicación, así como a los administradores, pero dejar a los demás no autorizados? Estoy recibiendo la identificación PostEntry como un parámetro de ruta, pero eso es después del atributo y también los atributos solo aceptan parámetros constantes, parece algo muy difícil, sus respuestas son muy apreciadas, ¡Salud!
Puesto que usted no puede saber quien creó el cargo hasta que mirar hacia arriba. Sería mejor incluir esta lógica después de hidratar el objeto. De lo contrario, si implementa esto como un aspecto, es posible que deba buscar la publicación dos veces (una para autorización y otra para edición). –
un punto bien planteado, de hecho, una vez veré si su identificación está en la entrada de función y nuevamente para hacer mi lógica de controlador. ¿Alguna idea de cómo golpear la base de datos solo una vez? – Freeman
Pensando en esto un poco más, si está utilizando un buen ORM y configurando su contexto antes de la llamada de autorización (no estoy seguro acerca de esa parte), entonces debe caché en el caché de primer nivel. Entonces, no deberías ver un golpe tan pequeño en el segundo hidrato. –