我不知道为什么我的验证函数总是返回False。我没有忘记把这个“使用Zend \ Crypt \ Password \ Bcrypt;”
$form = new UtilisateurPasswordForm($idUtilisateur);
$pass = new UtilisateurPassword();
if ($request->isPost()) {
$form->setInputFilter($pass->getInputFilter());
$form->setData($request->getPost());
if ($form->isValid()) {
$pass->exchangeArray($form->getData());
$bcrypt = new Bcrypt(['cost' => 14]);
$mdp_old = $bcrypt->create($pass->{'mdp_old'});
$result = $this->getServiceLocator()
->get('RestService')
->call('inblue/utilisateur/' . $idUtilisateur);
$mdp = $result->offsetGet('motDePasse');
if($bcrypt->verify($mdp, $mdp_old)){
var_dump('OH YEAH');
}else{
var_dump('ECHEC');
}
}
}
这是我使用bcrypt函数的Zend示例。在这种情况下我不认为zend是一个麻烦,我把一些var_dump看成变量,$ mdp_old也是一个哈希和$ mpd。 $ mdp来自WebService调用,我做对了。但是当我验证它们时,它返回false并且我确定我输入了正确的密码(我也是var_dump)。
谢谢!
编辑:我的不好,当使用验证时,我们只需要实现$ bcrypt然后只放入字符串 而不是这个$ bcrypt->验证($ mdp,$ mdp_old), 我应该使用$ bcrypt->验证($ pass-> {'mdp_old'},$ mdp) 它正在工作!!