0
我使用类似于http://blog.jmoz.co.uk/symfony2-fosuserbundle-role-entitiesSymfony2的安全系统(ACCESS_CONTROL和security.context)随着数据库存储角色和FOSUserBundle
一个解决方案所以我有一个实现RoleInterface
一个Role
实体,我有一个设置修改User
实体与角色建立多对多关系。
这允许我用这样的代码
$user = $this->get('security.context')->getToken()->getUser();
$role = new Role('ROLE_TEST');
$user->addRole($role);
$em = $this->getDoctrine()->getEntityManager();
$em->persist($role);
$em->persist($user);
$em->flush();
然后我可以检查用户是否有与
$user = $this->get('security.context')->getToken()->getUser();
if($user->hasRole('ROLE_TEST')){
//do stuff...
}
该解决方案是确定的作用,但我需要有访问安全上下文并使用如下代码:
if($this->get('security.context')->isGranted('ROLE_TEST')){
//do stuff...
}
而在security.yml cofig文件,我想用ACCESS_CONTROL这样的代码:
access_control:
- { path: ^/test$, role: ROLE_TEST }
我需要为这个自定义用户的经理吗?在数据库中分配给用户的角色不会转移到内置的Symfony安全系统中。
换句话说,当我查看探查器的安全部分时,它显示用户被分配到Roles [ROLE_USER]
,但我希望能够得到它,因此系统还会识别我为数据库设置的角色登录的用户,如ROLE_TEST
。