这次,我在管理用户角色的项目中遇到了一个奇怪的错误。
我安装了EasyAdmin捆绑软件,可以在其中管理用户的角色。因此,我以有权访问EasyAdmin的用户身份登录(在本例中为ROLE_ADMIN)。除了该角色外,我还有其他几个角色,其中一个叫做ROLE_SUPERSUSER,用户可以在其中编辑2个字段,其余用户无权编辑它们。
因此抛出EasyAdmin,我从自己中删除了ROLE_SUPERSUSER,这就是问题的摘要。如果您具有ROLE_SUPERSUSER,如果我尝试从配置文件访问编辑区域,则可以编辑此字段,但是由于我已将此角色从我自己身上删除,因此希望不要在那儿观看此字段。而是在屏幕上显示错误。
如果我仅注销并再次登录,则该问题已解决。但是很明显,当我更改角色时,我不能强迫用户注销并登录。
我想问题出在缓存上,但是我没有找到解决方法。
答案 0 :(得分:0)
Symfony角色默认添加到身份验证中,因此您必须重新登录才能使此更改生效。
您可以在security.yml
中进行更改。
security:
always_authenticate_before_granting: true
答案 1 :(得分:0)
多亏了KNPUniversity,我可以找到一个解决方案。
解决方案遍历会创建一个侦听器,该侦听器会在每个控制器之前更新用户。
我从这些链接中得到了想法:
https://github.com/symfony/symfony/pull/24331
请特别注意以下链接:
https://github.com/symfony/symfony/issues/12025#issuecomment-219723819