Laravel无法检查用户名和密码

时间:2014-08-09 07:31:00

标签: php laravel

在我的Laravel项目中,我的数据库中包含以下列:

username    |    password
admin            $2y$10$ioLPnSSfjm6gwmraR3Ne2.4o6A/2HS1HpIhhHVCDVr3

Hash适用于a,我希望通过此代码检查:

Route::post('auth', array('as'=>'auth', 'before'=>'csrf', function(){
    $user = array(
        'username' => Input::get('username'),
        'password' => Input::get('password')
    );

    if (Auth::attempt($user)) {
        echo "OK";
    }
    else echo "NO";
}));

usernamepassword字段值返回:

Array ( [username] => admin [password] => a ) 

attempt结果:

NO

更新帖子:

var_dump( $user );
var_dump( Auth::attempt($user) );

结果:

array(2) { ["username"]=> string(5) "admin" ["password"]=> string(1) "a" } 

bool(false) 

Laravel版本:

Laravel Framework version 4.2.8

2 个答案:

答案 0 :(得分:2)

可能在幕后错过了一个愚蠢的错误。 我建议你回到你的数据库,将你的'密码'列更改为'varchar 255' 为密码a重新生成哈希值,在密码列中设置新密码,然后重试。

当Auth :: attempt()时,重要的是放置普通条目。 (你做得对)

并且在进行调试时非常简单地将其作为电子邮件array('as'=>'auth', 'before'=>'csrf'); Route::post('auth', function(){});它有助于快速确定问题

答案 1 :(得分:0)

错误可能在您的用户模型中(在app / models / User.php中)。它是否实现了UserInterface?

同样在你的Auth文件中(在app / config / auth.php中),你应该有类似的东西:

'model' => 'User',

如果您更改了用户模型,或者只是以不同的方式对其进行了命名,那么您必须在auth文件中修复它以使Auth ::尝试工作。