これは、暗号化メソッドにPHP定数PASSWORD_DEFAULT
を使用しています。デフォルトのハッシュタイプはbcrypt
です。
This is using the php constantPASSWORD_DEFAULT
for the encryption method. The default hash type isbcrypt
.
bcryptとPHPのパスワードハッシュの詳細については、phpのドキュメントをご覧ください。
See the php documentation for further information on bcrypt and PHP’s password hashing.
このアダプターの構成オプションは次のとおりです:
The config options for this adapter are:
password_hash()
の$algo
引数でサポートされている値です。デフォルトはPASSWORD_DEFAULT
です
- hashType: Hashing algorithm to use. Valid values are those supported by
$algo
argument ofpassword_hash()
. Defaults toPASSWORD_DEFAULT
- hashOptions: Associative array of options. Check the PHP manual for supported options for each hash type. Defaults to empty array.
これは、CakePHP2から移行したアプリケーションのパスワードハッシャーです。
This is a password hasher for applications that have migrated from CakePHP2.
フォールバックパスワードハッシャーを使用すると、複数のハッシャーを設定でき、それらを順番にチェックします。これにより、ユーザーは、パスワードがリセットされて新しいハッシュにアップグレードされるまで、古いハッシュタイプでログインできます。
The fallback password hasher allows you to configure multiple hashers and will check them sequentially. This allows users to login with an old hash type until their password is reset and upgraded to a new hash.
CakePHPは、ユーザーのパスワードをあるアルゴリズムから別のアルゴリズムに移行するクリーンな方法を提供します。これは、FallbackPasswordHasher
クラスによって実現されます。レガシーパスワードからデフォルトのbcryptハッシャーに移行する場合は、次のようにフォールバックハッシャーを設定できます:
CakePHP provides a clean way to migrate your users’ passwords from one algorithm to another, this is achieved through the FallbackPasswordHasher
class. Assuming you want to migrate from a Legacy password to the Default bcrypt hasher, you can configure the fallback hasher as follows:
$service->loadIdentifier('Authentication.Password', [
// Other config options
'passwordHasher' => [
'className' => 'Authentication.Fallback',
'hashers' => [
'Authentication.Default',
[
'className' => 'Authentication.Legacy',
'hashType' => 'md5',
'salt' => false // turn off default usage of salt
],
]
]
]);
次に、ログインアクションで認証サービスを使用してパスワード
識別子にアクセスし、現在のユーザーのパスワードをアップグレードする必要があるかどうかを確認します:
Then in your login action you can use the authentication service to access the Password
identifier and check if the current user’s password needs to be upgraded:
public function login()
{
$authentication = $this->request->getAttribute('authentication');
$result = $authentication->getResult();
// regardless of POST or GET, redirect if user is logged in
if ($result->isValid()) {
// Assuming you are using the `Password` identifier.
if ($authentication->identifiers()->get('Password')->needsPasswordRehash()) {
// Rehash happens on save.
$user = $this->Users->get($this->Auth->user('id'));
$user->password = $this->request->getData('password');
$this->Users->save($user);
}
// Redirect or display a template.
}
}