首先使用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 (TYPO3CMSSaltedpasswordsUtilitySaltedPasswordsUtility::isUsageEnabled('FE')) {
$objSalt = TYPO3CMSSaltedpasswordsSaltSaltFactory::getSaltingInstance($saltedPassword);
if (is_object($objSalt)) {
$success = $objSalt->checkPassword($password, $saltedPassword);
}
}
在调试这个代码片段时,我识别出了用户通过Request发送的密码,每次重试这个请求时,它都会使用给定的Salt算法进行加密。如果密码不断更改,我不知道如何获得正确的身份验证。
$objSalt
对象包含正确的哈希方法($pbkdf2-sha256$25000
(,数据库中存储的密码以相同的前缀开头,但实际负载不同。
那么,确切的问题是什么,或者我在上面的代码中缺少了什么来完成身份验证呢?
感谢您的帮助
BR,
Martin
用户通过请求发送的密码,每次我重试此请求时,都会使用给定的Salt算法进行加密
是的,因为盐每次都会改变。
您应该使用检索salting实例
$instance = TYPO3CMSSaltedpasswordsSaltSaltFactory::getSaltingInstance($user['password']);