私は事の最も単純なものを私の脳にぶち壊しています。symfonyでsha1()としてのパスワード入力をdbに保存
私はsymfonyで生成されたフォームをカスタマイズしています。私は、 'パスワード'フィールドが通常のフォーマットでパスワードを(期待通りに)書き込むという点を除いて、フォームをちょうど保存しています。
データベースエントリの前にこの値を傍受し、書き込む前にsha1()を呼び出す方法はありますか?
コードは基本的に次のとおりです。
$this->dialog = $request->getParameter('dialog');
$this->form = new UserForm();
if ($this->getRequest()->getMethod() == "POST") {
$this->form->bind($request->getParameter('user'));
// intercept here, I suspect
$user = $this->form->save();
}
EDIT: 問題は解決しました。
に/lib/model/User.php
クラスユーザーBaseUser {
public function save(PropelPDO $con = null) { if ($this->getPassword() != '') { $this->setPassword(sha1($this->getPassword())); } return parent::save($con); }
}
を拡張これは、のようなnoobのためにかなり明白だが、ではありません私自身。うまくいけば、これは他の誰かを助ける。 save()関数を拡張することなくこれを行うより良い方法があれば教えてください。
リソース:http://www.symfony-project.org/jobeet/1_4/Propel/en/10(参照:トークンで求人フォームを保護)
EDIT#2:Userモデルでこれを行うには良い方法(以下グラードの提案どおり)
public function setPassword($rawPassword)
{
$salt = "fgv932g2e9dshdfkdjgf927gf8hlz082";
$password = sha1($salt . $rawPassword);
parent::setPassword($password);
}
こんにちはグラード!有難うございます。とても明らか!しかし、私は少しあなたの機能を更新しました、より良いアイデアと思われる(はい、機能は非常に塩味です!);)...元の記事を参照してください! – David
塩をデータベースに保存して、それをユーザーごとに動的にすると、それをさらに塩味にすることができます;-) (私の更新されたコードを参照してください) –
笑!あまりにも多くの塩があなたの健康に悪いです、あなたは知っている... hehe! :) – David