Vérifier le mot de passe et créer l'utilisateur manuellement avec FOSUserBundle
J'utilise FOSUserBundle dans mon application. Je voudrais faire deux choses via les services HTTP:
vérifiez le mot de passe. Le service pourrait ressembler à ceci (le mot de passe ne sont pas chiffrés):
public function checkPasswordValidity($userId, $password) { $user = $this->getDoctrine() ->getRepository('MyCompanyUserBundleEntityUser') ->find($userId); if (specialFunction($user , $password)) echo 'Valid Password'; else echo 'Invalid Password'; }
créer un nouvel utilisateur via un autre service HTTP. Les paramètres serait le nom d'utilisateur et le mot de passe.
22
demandé sur
oradwell
2012-02-28 13:53:36
3 réponses
Vérifier le mot de passe:
$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
Créer un nouvel utilisateur:
$userManager = $this->get('fos_user.user_manager'); $user = $userManager->createUser(); $user->setUsername($login); $user->setPlainPassword($pass); ... $userManager->updateUser($user);
62
répondu
user1288434
2013-10-15 21:50:42
Pour moi, fonctionne:
$encoder_service = $this->get('security.encoder_factory');
$encoder = $encoder_service->getEncoder($user);
if ($encoder->isPasswordValid($user->getPassword(), $password, $user->getSalt()) {}
je n'ai pas tester deuxième question, mais je pense que c'est répondu déjà.
6
répondu
Tomas
2014-09-11 12:27:16
ajouter manuellement un nouvel utilisateur:
connectez-vous à phpmyadmin , l'accès fos_user_user tableau , cliquez sur insérer > remplissez les champs , nom d'utilisateur , email,rôles, etc.
Générer le sel et le mot de passe à l'aide de ce 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/>";
?>
Profitez-en !
0
répondu
Alin Razvan
2016-12-28 03:42:05