2009-07-16 14 views
1

HI、ケーキPHPの認証問題

私は認証に建てられたケーキのPHPに問題がある - 私はログインできません...

1)ユーザーは、アプリ制御パンネルを介して追加してます$ this-を使用してハッシュされます> auth->パスワード( 'XXX') - 私はアクションユーザー/ログインデータで))セキュリティ塩は

3 emtpyではありません、それはDBに

2 correntですチェックしました[ 'ユーザー'] [ 'パスワード']は空です(これが正しいかどうかはわかりませんが、Authがデータ[' password ']またはデータ[' User '] [' password ']の内容を削除しています。 t?私は$セッション - ログインしようとしていた後のフィールドは

をユーザー名とパスワードで

4)DBは、テーブルのユーザーがいる>フラッシュ( '認証')は言う:

ログインに失敗しました。無効なユーザー名または のパスワードAppControllerの中

しかし、私はのbeforeFilter

ます$ this-> Auth-> loginError =「いいえ、あなた 愚か者を設定しました!それは正しいパスワードではありません! ';

何が間違っている可能性がありますか? :(デバッグの

答えて

4

電源を入れ、生成されたどのようなクエリを確認してください。 どれもが、あなたはおそらくあなたのビューで間違った何かを持っていない場合。 いずれかがある場合、それは反対チェックハッシュされたパスワードを選択し、DBにパスワードを更新します。 あなたはすべてが正常に動作する必要があります成功した場合。最初のユーザーの設定

は少しトリッキーです。

+1

クエリが生成されていない場合は、フォームが間違っています。 – givanse

+0

@givanse - このエラーが発生しました(クエリが生成されません)。何がクエリーにならないのか知っていますか? –

0

をあなたの問題はPOST'd・データ・アレイ内にあるように見えます。data['User']['password']フィールドが空の場合、私はあなたが発見したかもしれないと思いますあなたの問題。IIRC、Authコンポーネントは自動的にハッシュのpaを実行しますssword。しかし、私は$this->data['User']['password']が(コントローラー内で)空であってはならないと信じています - それは平文ではありません。

フォームを確認して、入力名が正しいことを確認してください。また、niteriaのように、デバッグダンプのSQLコードをチェックして、データベースに対してどのような資格情報がチェックされているかを確認してください($this->Auth->password('somestring')に電話をかけて、ハッシュされたパスワードを調べることができます。 )。

GL!

1

あなたは追加しないでください、あなたのUsersController

2

function beforeFilter(){ 
    parent::beforeFilter(); 
} 

が入力されていることを確認してください:

function beforeSave(){ 

    if(isset($this->data[$this->alias]['password'])) { 
     $this->data[$this->alias]['password'] = Security::hash($this->data[$this->alias]['password'], null, true); 
     return true; 
    } 

} 

をあなたはapp_controllerに以下のスクリプトを持っている場合:

var $ components = array( 'Auth'、 'Email');

function beforeFilter() { 
    $this->Auth->fields = array(
     'username' => 'email', 
     'password' => 'password' 
    ); 
} 
1

データベースのパスワード列に正しいデータ型(char(40))が設定されていることを確認してください。