首先是我正在使用TYPO3版本8.7。
我目前面临的问题是关于存储在给定页面上的FrontendUser(fe_user)的身份验证(在本例中为pid 168。
显然,我正在尝试使用移动应用程序发送的给定凭据对用户进行身份验证。我能够解析用户数据并执行身份验证:
// plain-text password
$password = 'XXX';
// salted user password hash
$saltedPassword = 'YYY';
// 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);
}
}
[在调试此代码段时,我识别了用户通过请求发送的密码,每次我重试此请求时,密码都会使用给定的Salt算法更改进行加密。如果密码不断更改,我不确定如何获得正确的身份验证。
$objSalt
对象包含正确的哈希方法($pbkdf2-sha256$25000
),数据库中存储的密码以相同的前缀开头,但实际有效负载不同。
那么确切的问题是什么,或者上面的代码中我缺少什么来完成身份验证?
感谢您的帮助
BR,
马丁
用户通过请求发送的密码,每次我重试此请求时,密码都会使用给定的Salt算法进行更改
是的,因为每次都更换盐。
您应该使用以下方法检索盐腌实例:
$instance = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance($user['password']);