注册FOSUserBundle

时间:2017-07-12 15:45:01

标签: symfony fosuserbundle

我想在从前端向后端发送数据时注册用户,并使用FOSUserBundle。但是,当我在数据库中保留数据时,我得到一个空的salt值。

注册管理员:

<?php

namespace MedBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AppBundle\Entity\User;
use Symfony\Component\Security\Core\Encoder\MessageDigestPasswordEncoder;

class DefaultController extends Controller
{
    public function indexAction()
    {
        return $this->render('MedBundle:Default:index.html.twig');
    }

    public function registerAction()
    {
        $m = " saisie votre donnés";
        $request = $this->getRequest();
        $em = $this->getDoctrine()->getManager();

        if ($request->getMethod() == 'POST') {
            $username = $request->request->get('username');
            $email = $request->request->get('email');
            $pass = $request->request->get('pass');
            $userManager = $this->get('fos_user.user_manager');
            $user= new User();
            $user->setUsername($username);
            $user->setEmail($email);
            $user->setPlainPassword($pass);
            $user->setEnabled("1");
            $em->persist($user);
            $em->flush();

            $m= "success";
        }

        return $this->render('default/registere.html.twig',array('m' => $m));
     }
}

用户实体:

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;

class User extends BaseUser
{
    protected $id;
    protected $username;
    protected $email;
    protected $plainPassword;
    protected $enabled;
    protected $salt;
    protected $roles;

    // ...
}

当我设置

$user->setSalt('hello');

我有一个salt为空的错误。

1 个答案:

答案 0 :(得分:0)

如果您使用的是bcrypt,它会使用内置盐,因此您不会将盐存储在数据库中。

https://github.com/FriendsOfSymfony/FOSUserBundle/issues/946