Symfony 是否有任何最简单的方法允许具有特定条件的用户查看页面?

Symfony 是否有任何最简单的方法允许具有特定条件的用户查看页面?,symfony,Symfony,目前,有一个安全性如下的签出页面 /** * @Route("/checkout") * @Security("has_role('ROLE_ADMIN')") */ 现在所有管理员都可以查看此页面,我希望允许具有特定条件的用户与所有管理员一起访问此页面 我可以通过删除安全性并在每个操作中添加一个条件来实现这一点 那么有什么简单的方法来处理这个问题吗?你有很多可能: @安全性,并执行以下操作: /** * @Route("/{id}/edit", name="admin_post_ed

目前,有一个安全性如下的签出页面

/**
 * @Route("/checkout")
 * @Security("has_role('ROLE_ADMIN')")
 */
现在所有管理员都可以查看此页面,我希望允许具有特定条件的用户与所有管理员一起访问此页面

我可以通过删除安全性并在每个操作中添加一个条件来实现这一点


那么有什么简单的方法来处理这个问题吗?

你有很多可能:

  • @安全性,并执行以下操作:

    /**
     * @Route("/{id}/edit", name="admin_post_edit")
     * @Security("user.getEmail() == post.getAuthorEmail()")
    */
    public function editAction(Post $post)
    {
        // ...
    }
    
  • 请注意,您始终可以访问user,也可以访问
    post
    实体,因为您有
    post$post
    。有时,您可能需要@ParamConverter

  • 只需执行一个条件,如果为true:
    抛出$this->createAccessDeniedException('您无法访问此页面!')

  • 对于更复杂的控件,可以使用投票器()

  • 对于非常复杂的控件:ACL()


  • 您可以创建自己的自定义函数来授予或不授予访问权限,然后从注释中调用它。这个函数可以是

    返回hasRole('ROLE_ADMIN')| |另一个条件()

    在这里看到更多

    你能把你的security.yml文件放进去吗?最简单的方法是使用symfony防火墙如果你想为你的页面设置自定义条件,你必须在每个操作中写入。我想你在寻找投票者