我正在使用symfony 2.5并尝试检查用户是否具有特定角色。这些表在数据库中正确设置,数据插入正确:
在数据库中存在一个用户test@example.com
,其中包含已定义角色admin
的映射组a:1:{i:0;s:10:"ROLE_ADMIN";}
我不知道为什么角色看不正确。调试工具栏告诉我,我只被认证为ROLE_USER
。
代码:
$securityContext = $this->container->get('security.context');
$securityContext->isGranted('ROLE_ADMIN');
if ($securityContext->isGranted('ROLE_ADMIN')) {
echo 'crazy coding magic happens here';
}
我发现这个问题(Symfony 2 FOS UserBundle users doesn't get group's role)似乎与我的问题有关,但我对答案不满意,因为我不想检查组访问但是角色访问。在我的情况下,组权限将来可能会发生变化。
感谢您的帮助!
答案 0 :(得分:0)
好的 - 似乎我自己找到了解决方案。
问题是您必须先注销已登录的用户并再次登录才能识别组角色映射中的更改。
上面的代码是正确的,在用户再次登录后,将分配正确的角色。