Change the role of a distant user without having to relog

你。 提交于 2019-12-18 02:57:32

问题


I am trying to change the role of a user, using the FOSUserBundle. The problem is: if the user is logged at the same time, he has to relog to see the new role.

Any solutions ?


回答1:


According to the Security Configuration Reference, there's a always_authenticate_before_granting option. There's not much informations about that, but I've tried it with custom roles loading from database and it does the trick. It looks like everytime you will make a new request, the security component will reload roles.

So if you want to make sure your roles are refreshed and reloaded in your user session just set this option to truein your security.yml :

# app/config/security.yml
security:
    always_authenticate_before_granting:  false



回答2:


Try this in your controller:

$this->get('fos_user.user_manager')->refreshUser($user);

See FOS/UserBundle/Model/UserManager.php




回答3:


1: You must enable switch_role: true in your firewall configuration. 2: Next you must allow the role of ROLE_ADMIN to be able to switched into another role. 3: just make link to the ?_switch_role=userNameCanonical

its mostly done by symfony security fos has nothing to do with the role switching.



来源:https://stackoverflow.com/questions/9220975/change-the-role-of-a-distant-user-without-having-to-relog

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!