CakePHP

パスワードのハッシュ化

覚書。

事前準備

認証機能準備にあたり、phpmyadminにてusersテーブルを作成。

CREATE TABLE `users` (
    `id` INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(255),
    `password` VARCHAR(255),
    `role` VARCHAR(20),
    `mail` TEXT,
    created DATETIME DEFAULT NULL,
    modified DATETIME DEFAULT NULL
);

(※↑ID、usernameパスワードと権限付けた)

Usersをbakeする

cd \xampp\htdocs\XXXX cakephpが展開されている場所XXXXに移動
bin\cake bake bakeコマンドの一覧表示
bin\cake bake all bake all対象テーブル表示

bin\cake bake all users usersをbakeする

ブラウザでアクセスする

http://localhost/news/users/add

パスワードのハッシュ化

Model/Entity/User.php

ページ(use Cake\ORM\Entity; の)上部に追加
use Cake\Auth\DefaultPasswordHasher;

※エラーが出る場合はこんなエラーがでる

Class 'App\Model\Entity\DefaultPasswordHasher' not found File C:\xamp\htdocs\bookmarker\src\Model\Entity\User.php Line: xx

    /**
     * エンティテイの修正 method
     * use cake\Auth\DefaultPasswordHasher;を追加
     */
    protected function _setPassword($password){
        return (new DefaultPasswordHasher)->hash($password);
    }

_setPassword…パスワードの値を設定する際にハッシュ化するためのもの
DefaultPasswordHasher・・・パスワードハッシュ化のためのクラス
このメソッドを用意することで、passwordの項目が自動的にハッシュ化されて保存されるようになる。
※ハッシュ化はConfigフォルダ内app.phpにあるセキュリティソルトの値を使って生成している。

  • この記事を書いた人

ゆず

忘れないように自分の覚書と、誰かも困っているかもしれないので参考になればいいなくらいの軽い備忘録です。
一杯おごる

-CakePHP