问题
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 true
in 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