0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【CakePHP】データベースのフルバックアップ機能を実装した時に困った事とその解決法

Posted at

CakePHP で作成されたシステムに
フルバックアップ機能を付与する際に
User テーブルのパスワードの
バックアップが困難な現象に遭遇しました。

User テーブルのパスワードを
CakePHP の機能で書き込むと
自動でハッシュ化されるため
バックアップをそのまま読み込むと
2 重でハッシュ化されてログインできなくなるのです。

そこで SQL を叩いて
自動でハッシュ化されるのを
回避する事にしました。

パスワード以外を読み込んで
パスワードのみを次のような SQL で
変更する作業をしました。

SQL文
UPDATE User SET password = '7c426e0e523bdb6c4178fb46800de4f87811a8f8' WHERE id = 4;

Model に

Model に追加するメソッド
public function setPassword($id, $password) {
	$this->getDataSource()->fetchAll("UPDATE ib_users SET password = '" . $password . "' WHERE id = " . $id . ";");
}

というメソッドを追加して
Controller のパスワードを変更したい箇所で

パスワード変更処理
$this->コントローラー名->setPassword($splitData[1], $splitData[3]);

という記述をする形です。

私の環境は CakePHP : 2.10 ですが
後のバージョンもそれほど対処法は
変わらないと思います。

パスワードをバックアップで上書きしたい場合は
SQL で保存して下さい。


以上フルバックアップ機能を実装する際に
ユーザーのパスワードを保存する方法について
紹介しました。

この方法に気付くまで
私はフルバックアップに
パスワードを含める事が
できませんでした。

気付いた時に大変気持ちよかったため
この気持ちを共有したいと思い
この記事を作成しました。

この記事でフルバックアップを実装する際の問題を
解決できた人が現れたならば幸いです。

皆さんの開発の助けになれますように。
閲覧ありがとうございました。

0
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?