在我的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";
}));
username
和password
字段值返回:
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
答案 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 ::尝试工作。