9

1人のユーザーを設定したLaravel 4アプリがあります。私のログイン ルートではAuth::attempt、電子メールとパスワードを使用して呼び出していますが、常に false として返されます。私は間違いなく正しいパスワードと正しいハッシュをデータベースに持っているので、Hash::checktrue が返されます。

emailの代わりにログインフィールドとして使用しているためだと思いますがusername、そのための設定が表示されません。この質問は、オプションを追加できることを暗示していましconfig/auth.phpたが、機能しませんでした。This questionは配列キーとして使用するように言ってusernameいますが、データベースのユーザー名フィールドを選択しようとするため、SQLエラーが発生します。

ユーザー名フィールドを指定するために User モデルに何かを追加する必要がありますか? これが私のログインルートです:

Route::post('login', function() {

    // data from login form
    $credentials = array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
    );

    $auth = Hash::check(Input::get('password'), Hash::make('mypass'));
    var_dump($auth); // this is TRUE

    // login was good
    $auth = Auth::attempt($credentials);
    var_dump($auth); // this is FALSE
});
4

3 に答える 3

11

問題が見つかりました。上記のコメントでジェイソンが示唆したように、私はmodels/User.phpファイルを変更し、必要だとは思わなかったいくつかの機能を削除しました。

getAuthIdentifier()およびメソッドはgetAuthPassword()、認証のために User モデルに含める必要があります。

于 2013-04-24T09:57:25.150 に答える
6

app/config/app.php で、「キー」が設定されていることを確認してください。これは私が私の髪を引っ張るようになりました。パスワードは DB でハッシュされているように見えますが、このキーを設定してパスワードを DB に再ハッシュするまで、常に false が返されます。

「php artisan key:generate」

于 2013-04-24T03:10:21.900 に答える