CakePHP4の認証チュートリアルで準備するユーザーのパスワードはbcrypt
CakePHP4シンプルな認証と認可のアプリケーション https://book.cakephp.org/4/ja/tutorials-and-examples/blog-auth-example/auth.html に認証サンプルがあるが、準備するべき usersテーブルの内容が見つけられない。 チュートリアル中では以下でパスワードのハッシュ化を行っているようなので確認してみる
return (new DefaultPasswordHasher)->hash($password);
vendor/cakephp/cakephp/src/Auth/DefaultPasswordHasher.php
protected $_defaultConfig = [
'hashType' => PASSWORD_DEFAULT,
'hashOptions' => [],
];
public function hash(string $password)
{
/** @psalm-suppress NullableReturnStatement */
return password_hash(
$password,
$this->_config['hashType'],
$this->_config['hashOptions']
);
}
password_hash関数についてはこちら https://www.php.net/manual/ja/function.password-hash.php ということなので users テーブルの passwordに準備するべき文字列は、 例えば pass という文字列であれば、shell で以下を実行して得られる。 php -r "echo password_hash('pass', PASSWORD_DEFAULT, []);"
DBに登録
INSERT INTO users (id, email, password, role, created, modified) VALUES (
1, 'mail@example.com',
'$2y$10$TD/pzvy9qh2MXwAdk2.En.iaATn0YYMlWggfzvrfehUsc0IGoY9nW', 'admin', NOW(), NOW());
ログインしてみて確認する。 password_hash関数の出力結果は毎回異るが、DefaultPasswordHasher.php で password_verify() で比較しているので、その時出力されたものを設定すれば良いようだ。
チュートリアル全部終わってログイン後に add するユーザーはパスワードハッシュ化済みになります。
ディスカッション
コメント一覧
まだ、コメントがありません