0

私は過去2時間、これに頭を悩ませてきました。基本的に、私のユーザーテーブルはユーザーではなくメンバーと呼ばれます。このコードをAppController.phpに追加しましたが、クエリが実行される前にパスワードは常にハッシュされます。

私は何が間違っているのですか?

public $components = array(
    'Auth' => array(
        'loginAction' => array(
            'controller' => 'members',
            'action' => 'login'
        ),
        'authenticate' => array(
            'Form' => array(
                'fields' => array('username' => 'username', 'password' => 'password'),
                'userModel' => 'Member'
            )
        )
    )
);

ありがとう :)

4

2 に答える 2

1

Cake 2.xでは、自動ハッシュパスワードはデフォルトでオフになっています

于 2013-01-29T12:56:22.843 に答える
0

ファビアン、あなたは過度に妄想的だと思います。パスワードハッシュをオフにして、ユーザーログインシステムが正しく機能していることを確認したいですよね?まあ、ハッシュされたパスワードとハッシュされていないパスワードでログインすることに違いはありません。

私のパスワードがTest123。ハッシュがオフになっている場合、ログインできる唯一の方法は、入力Test123した場合であり、データベースでもまったく同じです。ハッシュがオンの場合、SHA1でハッシュされたパスワードがオンになります8308651804facb7b9af8ffc53a33a22d6a1c8ac2。したがって、ログインできる唯一の方法は、データベースで一致する、ハッシュされていないパスワードの正確な表現を入力することです。

どちらの場合も、ログインを許可する正確な文字列は1つだけです。したがって、ログインしない場合は、データベースにあるハッシュまたはハッシュ解除された正しいパスワードを入力していません。

したがって、これにより、データベースにパスワードを手動で事前入力して(たとえばTest123)テストしようとしていると想定し、ログインしようとしていると思います。もちろん、パスワードのハッシュバージョンがわからないためTest123、データベースに入力します。ログインしようとすると、Cakeはハッシュバージョンのパスワードを使用しようとし8308651804facb7b9af8ffc53a33a22d6a1c8ac2ますが、ログインは機能しません。

オンラインのSHA-1ジェネレーターを使用してパスワードを生成するだけです。したがって、と入力Test123し、提供されるハッシュバージョンを取得して、データベースに配置します。次に、と入力してログインするとTest123、Cakeはそれをハッシュし、データベース内のハッシュされたバージョンと照合し、ログインします。

ログインしない場合は、間違ったパスワードを入力したか、データベースに間違ったハッシュを保存しました。また、データベースのパスワードフィールドが、ハッシュ全体を格納するための正しいタイプであることを確認してください。CHAR(40)は、SHA-1パスワードに適しています。

于 2013-01-29T16:30:22.147 に答える