我想通过控制器中的REST-API对自定义的FrontendUser进行身份验证。我尝试使用this guide使用 SaltedPasswordsUtility 对密码进行哈希处理。
我从相同的密码获得每个请求不同的哈希值。我认为这是因为盐不一致。
如何将纯文本密码与数据库中的密码哈希进行比较,或者是否有其他完全相同的方式实现密码?
到目前为止,我的代码是:
/**
* action check
*
* @param string $username
* @param string $password
* @return string
*/
public function checkAction(string $username, string $password)
{
$user = $this->userRepository->findOneByUsername($username);
$saltedPassword = '';
if (\TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) {
$objSalt = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(NULL);
if (is_object($objSalt)) {
$saltedPassword = $objSalt->getHashedPassword($password);
}
}
echo $saltedPassword;
echo "<br>";
$saltedPassword = $user->getPassword();
// keeps status if plain-text password matches given salted user password hash
$success = FALSE;
if (\TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) {
$objSalt = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance($saltedPassword);
if (is_object($objSalt)) {
$success = $objSalt->checkPassword($password, $saltedPassword);
}
}
echo $saltedPassword;
return "";
}
答案 0 :(得分:0)
代码正在唤醒。我搞砸了在后端为测试用户设置错误的密码。