CakePHP2でコマンドでパスワードリセットする方法

投稿者: | 2022年11月16日

CakePHP2にて、認証機能を付けたが、パスワードリセット機能を作っていない。

なので、パスワードを忘れた場合に大いに困った。

リセット機能は作るとして、取り急ぎコマンドでリセットする方法を調べた。

パスワードはハッシュ化して保存しているので、ハッシュ処理を入れてやった。

実際やったこと

コマンド実行するために以下を作り込んだ。

app/Console/Command/HashpasswordShell.php

<?php
App::uses('SimplePasswordHasher', 'Controller/Component/Auth');

class HashpasswordShell extends AppShell {
    public function main() {
        Security::setHash('sha256');
        $passwordreset = new SimplePasswordHasher();
        $this->out($passwordreset->hash($this->args[0]));
    }
}

ハッシュ時にSHA256を指定する。これをやらないとsha1でハッシュ化されるみたい。

で、以下を実行してやればいい。

php app/Console/cake hashpassword (パスワード)

出力された文字列をDBのパスワードのところにupdateしてやれば良い。

最後に

ちなみに、コマンド実行時に「php」を付けているが、
サーバ自体で複数バージョンのphpを運用しており、
サーバデフォルトと異なるphpを指定する必要がある場合
(cakephpを運用しているphpバージョンがサーバの
デフォルトバージョンと異なる場合)は、
ここで該当バージョンのphpを指定する必要があったため付けて実行した。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)