Laravel 5.2:身份验证auth :: attempt返回false

时间:2016-05-26 08:37:52

标签: php laravel laravel-5.2

我正在处理身份验证模块,我有这个奇怪的问题,$user = array( 'name' => Input::get('username'), 'password' => Input::get('password') ); if (Auth::attempt($user)) { return "ok."; } else { dd($user); } 返回false,我的用户名和密码是正确的。

同样question也在这里被问到,但这并没有解决我的问题,这个问题是关于laravel 4,我已经尝试了他们的方法,但仍然没有工作。

我的控制器中有以下代码:

array:2 [▼
  "name" => "ali"
  "password" => "ali"
]

else部分返回:

name

这意味着users和密码是正确的。

我正在使用laravel 5.2,在我的remember_token表格中,密码未经过哈希处理,没有user表示我已直接创建了clearfix

2 个答案:

答案 0 :(得分:2)

try方法在将密码与数据库进行比较之前对密码进行哈希处理,这意味着如果数据库中的密码未经过哈希处理,则不会匹配。

答案 1 :(得分:1)

这不起作用,因为auth :: attempt使用bcrypt将密码转换为hash,并在users表中查找该hash以匹配。

简而言之,密码应该是存储在数据库表中的哈希值,用于auth ::尝试工作。

这就是你的if()条件失败的原因。

以下是来自laravel 5.2 docs

  

attempt方法接受一个键/值对数组作为其第一个   论点。数组中的值将用于查找用户   你的数据库表。因此,在上面的示例中,用户将是   通过电子邮件列的值检索。如果找到用户,则   存储在数据库中的哈希密码将与之进行比较   散列密码值通过数组传递给方法。如果是两个   将启动散列密码匹配经过身份验证的会话   用户。

     

如果身份验证成功,则尝试方法将返回true。   否则,将返回false。