我正在尝试使用FOSUserBundle更改用户的角色。问题是:如果用户同时登录,他必须重新登陆以查看新角色。
任何解决方案?
答案 0 :(得分:12)
根据Security Configuration Reference,有一个always_authenticate_before_granting
选项。关于这一点没有太多的信息,但我已经尝试过从数据库加载自定义角色并且它可以解决问题。看起来每次您发出新请求时,安全组件都会重新加载角色。
因此,如果您想确保在用户会话中刷新并重新加载您的角色,只需将此选项设置为true
中的security.yml
:
# app/config/security.yml
security:
always_authenticate_before_granting: false
答案 1 :(得分:0)
在你的控制器中试试这个:
$this->get('fos_user.user_manager')->refreshUser($user);
请参阅FOS / UserBundle / Model / UserManager.php
答案 2 :(得分:-1)
1:您必须在防火墙配置中启用switch_role:true。 2:接下来,您必须允许ROLE_ADMIN的角色能够切换到另一个角色。 3:只需链接到?_switch_role = userNameCanonical
它主要由symfony安全fos完成,与角色转换无关。