无需重新设置即可更改远程用户的角色

时间:2012-02-10 00:16:59

标签: symfony fosuserbundle

我正在尝试使用FOSUserBundle更改用户的角色。问题是:如果用户同时登录,他必须重新登陆以查看新角色。

任何解决方案?

3 个答案:

答案 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完成,与角色转换无关。