0

私は非常に奇妙な問題を抱えています。ユーザーをデータベースに追加するための簡単なフォームを作成しました。

コードは非常にうまく機能し、ユーザーは正しく db に保存されます。

しかし...

検証の使用に問題があります。これは、パスワード フィールドに関する検証配列の抜粋です。

public $validate = array(        
    ...
    'password'  => array(
        'rule'     => array('minLength', 4),
        'required' => true,
        'message'  => "La password deve essere lunga almeno 4 caratteri"
    )
);

minLength ルールは正しく機能しますが、実行中のメッセージを表示しようとすると:

debug($this->User->validationErrors);

私のコントローラーで。次の出力が表示されます。

array(
    'password' => '*****'
)

なぜ「*」?? $validate配列に書いたメッセージを取得したいと思います。

この問題は、パスワードフィールドでのみ発生します。

4

2 に答える 2

2

これは、不注意な人がデータベースのパスワードを Web サイトに表示するのを避けるために実装しなければならなかった愚かな「セキュリティ機能」です (デバッグをオフにするのを忘れたため)。したがって、キー「パスワード」、「スキーマ」などが配列にある場合、値はクロークされます。

pr()、var_dump()、print_r()、またはそれを行わない他の方法を使用してください。

PS: コードを見ればわかるかもしれません ( https://github.com/cakephp/cakephp/blob/master/lib/Cake/Utility/Debugger.php#L449 )

于 2013-02-08T09:48:03.943 に答える
0

パスワードはハッシュ化されており、4 文字を超えているためです。パスワードを確認し、beforeSave でハッシュを検証した後に確認する必要があります:)

使用している Cake のバージョンは何ですか?

于 2013-02-08T09:52:18.883 に答える