在 CakePHP 4.x / Authenticator 2.x 中禁用密码散列
Disable password hasing in CakePHP 4.x / Authenticator 2.x
我正在将 CakePHP 用于一个学校项目,其中为您提供了一个填充的数据库。
用户需要使用我已经创建的用户名/密码登录。然而,问题是,数据库中的用户有一个未加密的密码,我想用它来验证他们。
我找不到任何方法来禁用密码哈希检查。我试过像这样指定后备密码哈希器。
$authenticationService->loadIdentifier('Authentication.Password', [
'fields' => [
'username' => 'username',
'password' => 'password',
],
'passwordHasher' => [
'className' => 'Authentication.Fallback',
'hashers' => [
'Authentication.Default',
[
'className' => 'Authentication.Legacy',
'hashType' => 'md5',
'salt' => false
],
]
]
]);
但是我找不到任何方法来禁用 'hashType'。
我最终没有禁用密码散列,而是使用了一种回退方法作为我的问题。
我通过 SQL 查询使用 sha1 对数据库中的所有密码进行了哈希处理。 (sha1 不安全,但在我的情况下不需要)。
当用户登录时,CakePHP 会检查密码是否必须升级为更安全的散列,并在需要时执行此操作。
(有关 CakePHP hashers/upgrading 的更多信息可在此处找到:https://book.cakephp.org/authentication/2/en/password-hashers.html)
我正在将 CakePHP 用于一个学校项目,其中为您提供了一个填充的数据库。
用户需要使用我已经创建的用户名/密码登录。然而,问题是,数据库中的用户有一个未加密的密码,我想用它来验证他们。
我找不到任何方法来禁用密码哈希检查。我试过像这样指定后备密码哈希器。
$authenticationService->loadIdentifier('Authentication.Password', [
'fields' => [
'username' => 'username',
'password' => 'password',
],
'passwordHasher' => [
'className' => 'Authentication.Fallback',
'hashers' => [
'Authentication.Default',
[
'className' => 'Authentication.Legacy',
'hashType' => 'md5',
'salt' => false
],
]
]
]);
但是我找不到任何方法来禁用 'hashType'。
我最终没有禁用密码散列,而是使用了一种回退方法作为我的问题。
我通过 SQL 查询使用 sha1 对数据库中的所有密码进行了哈希处理。 (sha1 不安全,但在我的情况下不需要)。
当用户登录时,CakePHP 会检查密码是否必须升级为更安全的散列,并在需要时执行此操作。 (有关 CakePHP hashers/upgrading 的更多信息可在此处找到:https://book.cakephp.org/authentication/2/en/password-hashers.html)