0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CakePHP3でパスワードチェックが必要になった

Posted at

要約すると

DefaultPasswordHasherクラスのcheck()メソッドで照合する。

序章

CakePHP3で作成したサイト。
例えばパスワードの変更時に、現在のパスワードをチェックしたいときー(©551)
下記の風味ののページを作りたい、と。

abcd.jpg

んで、このときに、どうやって現在のパスワードのチェックを行えばよいのでしょうか?ってなったんですよ。

条件

・ユーザー登録時に、DefaultPasswordHasher->hash()しています。
・現在のパスワード欄にあるinputのnameは、old_passwordだとします。

混迷期

あ、そうか。
ログインのところでやってるわ。

$this->Auth->identify();

の1行で処理されてる??
IDとパスワードをPOSTしたら、この1行でデータベースと照合してくれるの??
マジ簡単。

でも、俺がやりたいのはそういうことじゃない。

一筋の光明

ググる。ググる。くくる(それはたこ焼き屋)。
そしてたどり着いた。

また、__DefaultPasswordHasher__のcheckメソッドを使うんだねグーグル先生!?じゃなくて、記事書いた人!ありがとう、丸パクりする!!

成果物

controllerにこんな感じで書いた。
モデルでどうとかいう記事があったけど、俺にはそんな高尚な処理書けない!
MVCモデルが破綻してるけど気にしない!って豪胆な性格の人はどうぞ。

// クラスの先頭の方で
use Cake\Auth\DefaultPasswordHasher;

中略

// 元のパスワード。ハッシュ化されているもの
$db_password = DBからパスワードを取ってくるメソッド();
// 入力された現在のパスワード
$inputed_password = $this->request->getData('old_password');

$hasher = new DefaultPasswordHasher();

// パスワードが一致してたらtrueが返る!
return $hasher->check($inputed_password, $db_password);

後略

できてよかった。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?