Я пытаюсь сделать страницу обновления профиля, где люди могут изменить детали профиля. и им нужен пароль для обновления профиля.
я использую zfcuser
модуль для входа и регистрации.
я не знаю, какой метод шифрования используется zfcuser
,
Теперь мне нужно сравнить зашифрованный пароль по zfcuser
с паролем, введенным пользователем при обновлении профиля.
Как если бы user_inserted_password==encrypted_password_in_database
затем обновите профиль.
я также попробовал этот код
$bcrypt = new Bcrypt;
$bcrypt->setCost(14);
$pass = $bcrypt->create($newpass);
но не совпадает с зашифрованным паролем в базе данных.
Наконец я использовал этот код,
use ZfcUser\Options\PasswordOptionsInterface;
use Zend\ServiceManager\ServiceManager;
use Zend\ServiceManager\ServiceManagerAwareInterface;
use Zend\ModuleManager\Feature\ServiceProviderInterface;
use ZfcUser\Mapper\UserInterface as UserMapperInterface;
use ZfcBase\EventManager\EventProvider;
use GoalioForgotPassword\Options\ForgotOptionsInterface;
use Zend\Crypt\Password\Bcrypt;
class ReservationsController extends AbstractActionController
{
protected $zfcUserOptions;
public function indexAction()
{
$bcrypt = new Bcrypt;
$bcrypt->setCost($this->getZfcUserOptions()->getPasswordCost());
$pass = $bcrypt->create("test");
echo $pass; exit;
}
public function getZfcUserOptions()
{
if (!$this->zfcUserOptions instanceof PasswordOptionsInterface) {
$this->setZfcUserOptions($this->getServiceManager()->get('zfcuser_module_options'));
}
return $this->zfcUserOptions;
}
}
но получаю эту ошибку.
Zend\Mvc\Controller\PluginManager::get was unable to fetch or create an instance for getServiceManager
должен ли кто-нибудь иметь представление? как зашифровать пароль в zend2
zfcuser
модуль?
Заранее спасибо.
Bcrypt не создает одну и ту же строку каждый раз, как MD5. Если вы хотите проверить, является ли зашифрованный пароль действительным, вы можете использовать:
$bcrypt = new Bcrypt();
$bcrypt->setCost(14);
$bcrypt->verify('isThisCorrect?', $userPasswordFromDB)
Других решений пока нет …