LoginSignup
1
2

More than 5 years have passed since last update.

Cakephp2→3への移植

Posted at

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。

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2