当尝试使用Laravel的Auth类时,我发现它始终失败,因为(AFAIK)attempt()方法只是尝试选择用户名:
string(55) "SELECT * FROM `mdl_user` WHERE (`username` = ?) LIMIT 1"
(通过Event :: listen('laravel.eloquent')输出)
我使用Eloquent作为驱动程序,表字段是'username'和'password',我的模型(Moodle_User,位于models / moodle / user.php)是这样编写的:
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();
另外,我没有使用Hash类,因为Moodle目前使用MD5,所以我这样调用Auth::attempt()
:
Auth::attempt(array('username' => $username, 'password' => md5($password)))
但它总是返回false。如果我通过Moodle_User模型做同样的事情,它会按预期工作。
为什么它总是返回假?
答案 0 :(得分:0)
您希望使用Hash::make()
而不是md5()
来哈希密码。
http://laravel.asia/p/laravel-authentication
我建议您使用自己的驱动程序,因为attempt
驱动程序中的eloquent
和fluent
驱动程序使用Hash::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