CakePHP3について全く触っていなかったので、CakePHP2で作成したWebシステムを移植してみた感想。
まずフォルダ構成が大きく変わっているのに戸惑う。src配下にすべて作成したものを配置するようだ。
configではdatabase.phpがなく、app.phpに纏められている。
大きく躓いたのが認証。
Authの使用方法などは大幅に変わっていないのだけれど、CakePHP2で使用していたSimplePasswordHasherがなく、
通常ではDefaultPasswordHasherが使用されることになっている。
ハッシュ化の方式が異なるのでパスワードを入力しても不一致扱いとなってしまう。
sha1でハッシュ化しているものを移植したい場合は、WeakPasswordHasherを使用する。
以下sha1でのサンプル。
AppControllerのinitialize
$this->loadComponent('Auth', [
'authenticate' => [
'Form' => [
'userModel' => 'User',
'fields' => ['username' => 'username', 'password' => 'password'],
'passwordHasher' => ['hashType' => 'sha1','className' => 'Weak']
],
],
'loginRedirect' => [
"controller" => "main",
"action" => "index"
],
'logoutRedirect' => [
"controller" => "login",
"action" => "index"
],
]);
DefaultPasswordHasherではPHPのpassword_hashでハッシュ化するため、PASSWORD_DEFAULT またはPASSWORD_BCRYPTのみの模様。
Sha256などでハッシュ化したい場合は、上記のhashTypeで指定すればいけるはず。
合わせて、app.phpのsaltも変更する事で認証OK。