CakePHP3めも

DefaultPasswordHasher を use して _setPassword を記述します。

patchEntity した段階で暗号化されるようです。

src\Model\Entity\User.php

<?php
namespace App\Model\Entity;

use Cake\Auth\DefaultPasswordHasher;
use Cake\ORM\Entity;

class User extends Entity
{
    protected $_accessible = [
        '*' => true,
        'id' => false
    ];

    protected $_hidden = [
        'password'
    ];

    protected function _setPassword($password)
    {
        return (new DefaultPasswordHasher)->hash($password);
    }
}

初期ユーザーのパスワード生成

データベースを作成する際に初期ユーザーを登録しておきたいですよね。
パスワードを暗号化しておく前提であれば app.php に書いてあるSALTを元に暗号化しておく必要があります。

AppController.phpを以下のように変えてやれば暗号化したパスワードを知ることができます。

<?php
namespace App\Controller;

use Cake\Controller\Controller;
use Cake\Event\Event;
use Cake\Auth\DefaultPasswordHasher;

class AppController extends Controller
{
    public function initialize()
    {
        parent::initialize();

        $this->loadComponent('RequestHandler');
        $this->loadComponent('Flash');
        $objHasher = new DefaultPasswordHasher;
        echo $objHasher->hash('password');
    }

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-09-19 (日) 19:09:17