ユーザーモデル、UsersController、およびユーザーモデルを使用するAccountControllerがあります(アカウントコントローラーは、アカウントの作成、ログイン、ログアウト時に使用されます)。
AccountControllerのbeforeSave関数を除いて、すべて正常に機能します。beforeSaveを使用してパスワードをハッシュしようとしていますが、機能しません(パスワードはハッシュされていない状態でデータベースに保存されます)。
public function beforeSave() {
parent::beforeSave();
if (isset($this->request->data['User']['password'])) {
$this->request->data['User']['password'] = sha1($this->request->data['User']['password']);
}
return true;
}
いくつかの注意:
- 古いシステムをCakePHPに変換しているため、「sha1」を使用してパスワードをハッシュします(古いシステムはsha1を使用してパスワードをハッシュしました)
- 保存機能が実行されていても
return false;
(そうではないと思っていました) - 電話
debug($this->request->data)
しても何も得られない - UsersControllerに同じbeforeSave関数を追加しましたが、うまく機能しませんでした
私の場合、beforeSaveが呼び出されていないと思いますが、その理由がわかりません。
解決済み: beforeSave関数はモデル内に配置する必要があります。これが私のbeforeSave関数です。
public function beforeSave($options = array()) {
parent::beforeSave();
$this->data['User']['password'] = sha1($this->data['User']['password']);
return true;
}