with fos symfony passwords fosuserbundle

symfony - with - Compruebe la contraseña y cree usuarios manualmente con FOSUserBundle



login fosuserbundle (3)

Agregar manualmente un nuevo usuario:

Inicie sesión en phpmyadmin , acceda a la tabla fos_user_user , haga clic en Insertar> campos de relleno, nombre de usuario, correo electrónico, roles, etc.

Genera sal y contraseña usando este script php:

<?php $salt = base_convert(sha1(uniqid(mt_rand(), true)), 16, 36); echo "Salt used: " . $salt ."<br/>"; echo "<br/>"; $password = ''adminpasswordhere''; $salted = $password.''{''.$salt.''}''; $digest = hash(''sha512'', $salted, true); for ($i=1; $i<5000; $i++) { $digest = hash(''sha512'', $digest.$salted, true); } $encodedPassword = base64_encode($digest); echo "Password used: " . $password ."<br/>"; echo "<br/>"; echo "Encrypted Password: " . $encodedPassword ."<br/>"; ?>

¡Disfruta!

Estoy usando FOSUserBundle en mi aplicación. Me gustaría hacer dos cosas a través de los servicios HTTP:

  1. Verificar contraseña. El servicio podría verse así (la contraseña no se cifraría):

    public function checkPasswordValidity($userId, $password) { $user = $this->getDoctrine() ->getRepository(''MyCompany/UserBundle/Entity/User'') ->find($userId); if (specialFunction($user , $password)) echo ''Valid Password''; else echo ''Invalid Password''; }

  2. Crea un nuevo usuario a través de otro servicio HTTP. Los parámetros serían el nombre de usuario y la contraseña.


  1. Verificar contraseña:

    $encoder_service = $this->get(''security.encoder_factory''); $encoder = $encoder_service->getEncoder($user); $encoded_pass = $encoder->encodePassword($password, $user->getSalt()); //then compare $user->getPassword() and $encoded_pass

  2. Crea un nuevo usuario:

    $userManager = $this->get(''fos_user.user_manager''); $user = $userManager->createUser(); $user->setUsername($login); $user->setPlainPassword($pass); ... $userManager->updateUser($user);


Para mí funciona:

$encoder_service = $this->get(''security.encoder_factory''); $encoder = $encoder_service->getEncoder($user); if ($encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt()) {}

No probé la segunda pregunta, pero creo que ya está answered .