[通过Extbase的PHP API调用来认证FrontendUser

问题描述 投票:0回答:1

首先是我正在使用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,

马丁

typo3 extbase typo3-8.7.x
1个回答
0
投票

用户通过请求发送的密码,每次我重试此请求时,密码都会使用给定的Salt算法进行更改

是的,因为每次都更换盐。

您应该使用以下方法检索盐腌实例:

$instance = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance($user['password']);
© www.soinside.com 2019 - 2024. All rights reserved.