0

我尝试使用 Typo3 的“eval”函数创建密码字段。

TYPO3 版本 7.6.9

这是我的配置:

'password' => array(
            'exclude' => 1,
            'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_pin.password',
            'config' => array(
                'type' => 'input',
                'size' => 50,
                'eval' => 'nospace,required,md5,unique,password'
            )
        ),

如果我在最后遗漏了“密码”,该字段将正常保存,但一旦我添加它,密码字段将不再更新/保存。

4

1 回答 1

-1

您不需要添加 md5 和 unique 作为 eval 参数。在 7.x 中,密码使用 saltedpasswords 系统扩展自动加密,比 md5 更安全。密码通常不是唯一的,所以我猜它是错误的,但它实际上也应该使用唯一的。

        'password' => array(
            'exclude' => 1,
            'label' => 'LLL:EXT:myext/Resources/Private/Language/locallang_db.xlf:tx_myext_domain_model_pin.password',
            'config' => array(
                'type' => 'input',
                'size' => 50,
                'eval' => 'nospace,required,password'
            )
        ),

稍后您可以通过这种方式检查密码: $hash是您数据库中的密码哈希,$password是您正在检查的播放密码

        if (\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::isLoaded('saltedpasswords') && \TYPO3\CMS\Saltedpasswords\Utility\SaltedPasswordsUtility::isUsageEnabled('FE')) {
            $saltObject = \TYPO3\CMS\Saltedpasswords\Salt\SaltFactory::getSaltingInstance(NULL);
            return $saltObject->checkPassword($password, $hash);
        } elseif ($GLOBALS['TYPO3_CONF_VARS']['FE']['loginSecurityLevel'] == 'md5') {
            return $password == md5($password);
        } elseif ($GLOBALS['TYPO3_CONF_VARS']['FE']['loginSecurityLevel'] === 'sha1') {
            return $password == sha1($password);
        }
于 2016-07-26T12:25:28.290 回答