仅允许访问所有者用户和管理员的最佳做法?

时间:2013-05-20 19:18:08

标签: php symfony security fosuserbundle

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

我不知道是否可以在security.yml中执行此操作,或者是否必须直接在控制器或其他位置执行此操作。推荐的方式是什么?

感谢。

1 个答案:

答案 0 :(得分: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()
{
    ...
}