fosuserbundle 在创建用户时设置确认令牌

fosuserbundle set confirmation token on create user

当我使用 fosuserbundle 在我自己的控制器上创建用户时,我的用户没有确认令牌(在数据库中)。我怎样才能创建这个?

        $userManager = $this->get('fos_user.user_manager');
        $userCreate = $userManager->createUser();
        $userCreate->setUsername($user->getUsername());
        $userCreate->setEmail($user->getEmail());
        $userCreate->setEmailCanonical($user->getEmail());
        $userCreate->setPlainPassword($user->getPassword());
        $userCreate->setEnabled(true);
        $userManager->updateUser($userCreate, true);

正常吗?

确认令牌是使用事件REGISTRATION_SUCCESS创建的,派发此事件时,事件侦听器应提供令牌并发送电子邮件以允许创建的用户确认其地址,

在你的情况下,你的 fosUser 的电子邮件配置应该被配置。结束然后确认令牌和电子邮件将起作用。

看那里:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/EventListener/EmailConfirmationListener.php

/**
 * @param FormEvent $event
 */
public function onRegistrationSuccess(FormEvent $event)
{
    /** @var $user \FOS\UserBundle\Model\UserInterface */
    $user = $event->getForm()->getData();
    $user->setEnabled(false);
    if (null === $user->getConfirmationToken()) {
        $user->setConfirmationToken($this->tokenGenerator->generateToken());
    }
    $this->mailer->sendConfirmationEmailMessage($user);
    $this->session->set('fos_user_send_confirmation_email/email', $user->getEmail());
    $url = $this->router->generate('fos_user_registration_check_email');
    $event->setResponse(new RedirectResponse($url));
}