0

我正在 Symfony2 中编写一个站点,使用 FOSUserBundle 来管理用户访问。我有一个名为“站点”的实体,它可以有很多用户。只有相关用户和管理员才能访问 Site:show 操作。

我不知道是否可以这样做,security.yml或者我是否必须直接在控制器或其他地方进行。推荐的方法是什么?

谢谢。

4

1 回答 1

5

如果您想在对象级别限制每个用户的访问,那么您正在寻找ACLsProblematicAclManagerBundle是一个很好的包装器,可以简化控制器中的 ACL 使用。

否则,如果您想限制每个角色的访问权限,那么您可以使用 security.yml 中定义的路由和角色

这是它应该是什么样子的示例:

access_control:
  - { path: ^/admin/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
  - { path: ^/admin, role: ROLE_ADMIN }
  - { path: ^/.*, role: [IS_AUTHENTICATED_ANONYMOUSLY] }

在您的控制器中,您还可以使用:

use JMS\SecurityExtraBundle\Annotation\Secure;

/**
 * @Route("/home", name="home") 
 * @Secure(roles="ROLE_USER")
 */
public function indexAction()
{
    ...
}
于 2013-05-20T19:39:47.510 回答