0

LaravelのAuthクラスを使おうとすると、(AFAIK)attempt()メソッドがユーザー名を選択しようとしているだけなので、常に失敗することがわかります。

string(55) "SELECT * FROM `mdl_user` WHERE (`username` = ?) LIMIT 1"

(これはEvent :: listen('laravel.eloquent')を介して出力されます)

私はドライバーとしてEloquentを使用しており、テーブルフィールドは「username」と「password」であり、私のモデル(models / moodle / user.phpにあるMoodle_User)は次のように記述されています。

class Moodle_User extends Eloquent {
    public static $table        = 'user';
    public static $connection   = 'moodle';
}

モデルをそのまま使用すると、問題なく動作します。

// returns the correct object
$user = Moodle_User::where('username', $username)->where('password', md5($password))->get(); 

また、Moodleは現在MD5を使用しているため、Hashクラスを使用していません。そのため、次のように呼び出しますAuth::attempt()

Auth::attempt(array('username' => $username, 'password' => md5($password)))

ただし、常にfalseを返します。Moodle_Userモデルを介してまったく同じことを行うと、期待どおりに機能します。

なぜ常にfalseを返すのですか?

4

1 に答える 1

0

パスワードをハッシュしHash::make()ないために使用することになっています。md5()

http://laravel.asia/p/laravel-authentication

ドライバーとドライバーで使用するのでattempt、独自のドライバーを使用することをお勧めします:eloquentfluentHash::check()

https://github.com/laravel/laravel/blob/master/laravel/auth/drivers/eloquent.php#L53

https://github.com/laravel/laravel/blob/master/laravel/auth/drivers/fluent.php#L41

于 2012-09-28T03:06:52.807 に答える