Laravel 4身份验证无效

时间:2013-04-24 00:44:11

标签: authentication laravel laravel-4

我有一个Laravel 4应用程序,我在其中设置了一个用户。在我的登录路线中,我使用电子邮件和密码呼叫Auth::attempt,但它总是返回为假。我肯定有正确的密码和数据库中正确的哈希,因为Hash::check返回true。

我认为可能是因为使用email作为登录字段而不是username,但我看不到任何设置。 This question暗示您可以向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
});

3 个答案:

答案 0 :(得分:11)

我发现了问题。正如Jason在上面的评论中所建议的那样,我修改了models/User.php文件并删除了一些我认为没必要的功能。

用户模型中必须包含getAuthIdentifier()getAuthPassword()方法才能进行身份验证!

答案 1 :(得分:6)

在app / config / app.php中确保设置了'key'。这让我把头发拉了出来。一切都会工作,密码似乎在数据库中散列,但在设置此密钥并将密码重新哈希到数据库之前,它总是会返回false。

  
    
      

“php artisan key:generate”

    
  

答案 2 :(得分:1)

遇到同样的问题,让我流汗数小时。明确检查您的 User.php 模型,确保您没有覆盖默认模式。谢谢Jason!