パスワードのハッシュ化

   

覚書。

事前準備

認証機能準備にあたり、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