哈希::检查不返回适当的结果

时间:2015-08-13 17:29:24

标签: php laravel authentication hash

我有一个users表,用于存储注册用户' username, email, password。密码通过Hash::make()函数进行哈希处理,然后保存到各自的表记录中。

我试图从头开始手动创建AuthController模块。

在我的authenticate()函数中,我检查尝试登录的用户输入的密码是否与用户名对应的哈希密码匹配,如下所示:

public function authenticate(AuthRequest $request)
{
    $hashedPassword = User::where('name', $request->name)
        ->select('password')
        ->get();

    $auth = Hash::check($request->password, $hashedPassword);

    //Die dumping just to check if the hash check has worked
    dd($auth);
}

这里,AuthRequest是Request类,它在将$request变量传递给authenticate()函数之前验证表单输入。

现在,不幸的是,Hash::check()函数没有按预期响应。如上所述,我试图验证用户在登录表单中输入的密码是否与数据库表中的散列密码相匹配。但是,尽管输入了与哈希密码相同的密码,但$auth变量仍会收到false值。

2 个答案:

答案 0 :(得分:2)

get返回一个集合。要直接获取值,请使用value方法:

$hashedPassword = User::where($request->only('name'))->value('password');

阅读标题从表中检索单行/列部分下的the docs

P.S。如果您使用的是旧版本的Laravel,则该方法称为pluck

答案 1 :(得分:2)

get更改为first以返回第一个不是集合

的项目
$user = User::where('name', $request->name)
    ->select('password')
    ->first();

$hashedPassword = $user->password;