我有一个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
值。
答案 0 :(得分:2)
get
返回一个集合。要直接获取值,请使用value
方法:
$hashedPassword = User::where($request->only('name'))->value('password');
阅读标题从表中检索单行/列部分下的the docs。
P.S。如果您使用的是旧版本的Laravel,则该方法称为pluck
。
答案 1 :(得分:2)