やったこと

webサービスを作るときに考えたことを垂れ流します

【CakePHP3】テーブルに保存するデータをハッシュ化する!

テーブル(Model)にデータを保存するときハッシュ化したいときってありますよね?

パスワード情報とかに関する人にバレたらまずいデータです。

CakePHP3では「エンティティクラス」にハッシュ化処理を書き込むと、保存するときに自動的にハッシュ化してくれます。

以下、「/src/Model/Entity/User.php」に「twitter_secret」のカラムと「twitter_token」のカラムをハッシュ化する処理を書き込んでいます。

use Cake\Auth\DefaultPasswordHasher;

class Users extends Entity
{
    ・・・

    protected function _setTwitterToken($value)
    {
        $hasher = new DefaultPasswordHasher();
        return $hasher->hash($value);
    }

    protected function _setTwitterSecret($value)
    {
        $hasher = new DefaultPasswordHasher();
        return $hasher->hash($value);
    }
}

こういう風に「_setXXXXX」みたいな名前にすると、自動的にそのカラムを保存するときに所定の処理を実行してくれるんですね(setterとかミューテーターとか言われてる機能です)

ハッシュ化するときは「/config/app.php」内の「Security and encryption configuration」の箇所に記されているsalt値を元に計算しているそうです。

以上