Buenas prácticas oficiales de Symfony

9.4. Comprobando los permisos sin @Security

El ejemplo de la sección anterior utiliza @Security junto con un ParamConverter para poder acceder al valor de la variable post. Si no te gusta hacerlo así o tus requerimientos son más complejos, recuerda que la seguridad se puede comprobar fácilmente con código PHP:

/**
 * @Route("/{id}/edit", name="admin_post_edit")
 */
public function editAction($id)
{
    $post = $this->getDoctrine()->getRepository('AppBundle:Post')
        ->find($id);

    if (!$post) {
        throw $this->createNotFoundException();
    }

    if (!$post->isAuthor($this->getUser())) {
        throw $this->createAccessDeniedException();
    }

    // ...
}