【发布时间】:2014-09-26 21:31:51
【问题描述】:
我将FOSUserBundle 用于我的symfony2 项目。注册后,我会使用下面的函数检查用户是否具有 FOSUB 提供的默认角色 ROLE_USER。
/**
* Returns true if user has ROLE_USER
*
* @return boolean
*/
public function hasDefaultRole() {
return ($this->hasRole('ROLE_USER'));
}
如果此函数返回 true,我会设置一个新的帐户注册表单并在提交时更改角色并删除 ROLE_USER。
编辑:
$user = $this->container->get('security.context')->getToken()->getUser();
...
$userManager = $this->container->get('fos_user.user_manager');
$user->removeRole("ROLE_USER");
$user->setRoles(array("ROLE_TEACHER", "ROLE_TEACHER_BASIC"));
$user->setStatus(1);
$userManager->updateUser($user);
$this->resetToken($user);
resetToken 这样做:
$token = new UsernamePasswordToken($user, null, 'main', $user->getRoles());
$this->container->get('security.context')->setToken($token);
我已经检查了数据库并且没有角色用户了。如果我注销并重新登录,$user->hasDefaultRole() 仍然返回 true。我在这里没有看到什么?或者这是预期的行为?
【问题讨论】:
标签: symfony2 php symfony fosuserbundle