2017-06-06 61 views
2

我需要以相同的方式手動加密密碼Symfony在Symfony中手動加密用戶密碼php

$user->setPlainPassword($password); 
$userManager->updateUser($user); 

這是保存用戶密碼的應用程序代碼。但它顯然是加密的(不像方法說的那樣簡單)。

如何手動獲得給定密碼的相同結果?

EDIT1:

的問題是,我想在用戶控制器代碼手動驗證用戶。我有可讀的用戶名和密碼作爲參數。如果它們不存在於數據庫中,我想返回401。

+1

什麼是ypou使用密碼? – zaph

+0

https://symfony.com/doc/current/components/security/authentication.html#using-password-encoders – yceruto

+0

@zaph我需要密碼才能將其與數據庫中的密碼進行比較。基本上我需要在php代碼中手動驗證用戶。 – eomeroff

回答

3

在你的控制器動作試試這個:

$encoder = $this->get('security.encoder_factory')->getEncoder($userClass); 
$encodedPassword = $encoder->encodePassword($plainPassword); 
5

Symfony的配備了一個有用的命令,它以同樣的方式編碼的密碼:

bin/console security:encode-password 'your_plain_password' 'AppBundle\Entity\YourUserClass' 
+0

謝謝。這可以通過編程來完成嗎? – eomeroff

+2

@eomeroff你可以檢查'安全:編碼密碼'來源,看看他們是如何做到這一點。說真的,不要那麼懶。 – zerkms