我将 symfony 2.0 与 fos 用户捆绑包一起使用,当涉及到配置文件更改时,我得到了一个非常奇怪的行为:
在我的用户实体中,我使用 FOSValidator,如下所示:
@FOSValidator\Unique(property="usernameCanonical", message="fos_user.username.already_used", groups={"Facebook", "profile_username"})
在我的 ProfileController 中
表单通过验证
$form = $this->container->get('form.factory')->create(new ProfileSimpleFormType(array($field)), $user);
$session = $this->container->get("session");
if ($this->container->get('request')->getMethod() == 'POST') {
$form->bindRequest($this->container->get('request'));
if ($form->isValid()) {
$this->container->get('fos_user.user_manager')->updateUser($user);
return $this->container->get('templating')->renderResponse('FOSUserBundle:Profile:show_field.html.' . $this->container->getParameter('fos_user.template.engine'), array(
'field' => $field,
'user' => $user
));
// }
}else{
$user2 = $this->container->get('security.context')->getToken()->getUser();
}
}
但现在到了奇怪的行为:
如果由于用户名存在而导致表单无效,则 $user2 使用现有用户名设置用户,因此我可以通过更改用户名来劫持其他帐户。
我试图调试一种视图类型的侦听器,但我找不到将现有用户名设置为安全令牌的点。