我正在Symfony2中编写一个站点,使用FOSUserBundle来管理用户访问。我有一个名为“Site”的实体,可以有很多用户。只有相关用户和管理员才能访问网站:show action。
我不知道是否可以在security.yml
中执行此操作,或者是否必须直接在控制器或其他位置执行此操作。推荐的方式是什么?
感谢。
答案 0 :(得分:5)
如果您想限制对象级别的每位用户访问权限,那么您正在寻找ACLs。 ProblematicAclManagerBundle是一个很好的包装器,可以简化控制器中的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()
{
...
}