【发布时间】:2020-06-27 18:45:16
【问题描述】:
为什么登录时 Hash::check 总是 false 或 null?
这是我的注册控制器的一部分。我保存在一个名为“密码”的表中的密码,我使用以下方法对其进行哈希处理
....
$user = new Hause_users();
$user->username = request('username');
$user->Email = request('email');
$user->password = Hash::make(request('password'));
$user->First_Last_Name = request('first_last_name');
$user->save();
下面是我使用 Hash::check 方法的登录控制器,我在其中检查当前用户,其在名为 Hause_users 的数据库中的哈希密码,我通过登录表单获取字符串输入密码,并尝试将其与哈希匹配::查看。在这种情况下,pass 必须是 123123。
问题是它总是返回“Bye”。
我在这里做错了什么?
<?php
namespace App\Http\Controllers\userController;
use App\Model\Hause_users;
use App\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Illuminate\Routing\Controller;
use Illuminate\Support\Facades\Response;
class loginController extends Controller
{
/**
* Handle an authentication attempt.
*
* @param \Illuminate\Http\Request $request
*
* @return Response
*/
public function authLogin(Request $request)
{
$data = Hause_users::where('username', '=', request('username'))->first();
$password = ($data['password']);
// dd($request->password);
//dd($data['password']);
$check = Hash::check($request->password, $data['password']);
if($check){
return 'welcome';
}else{
return 'Bye';
}
//echo($pass_in);
}
}
感谢您的建议,我正在使用 laravel 框架的 Hash::make 方法,该方法实际上是幕后的 bcript。我只能理解为什么 Laravel 提供的 Hash::check 与用户输入与从我的数据库中获取的密码不匹配。
【问题讨论】:
-
谢谢,但不是真的。我正在使用 laravel 框架的 Hash::make 方法,它实际上是幕后的脚本。我只是可以理解为什么 Hash::check 与用户输入与从数据库中获取的密码不匹配。
-
是的,我说这很可能是因为您没有将哈希正确存储在数据库中。
-
更不用说您正在检查您提供的代码中的字符串“密码”......
-
@miken32 感谢您的帮助,实际上我正在正确收集它,dd() 正在提取散列字符串和用户输入。我用我正在使用的一些 dd() 检查做了一个小的代码编辑。