首页 > 解决方案 > 验证不起作用 Laravel 对 bcrypted 密码的自定义身份验证

问题描述

我创建了一个注册系统,其中密码以 bycript 形式存储。但是当我试图验证登录目的时,它说的是错误的密码。我的身份验证代码如下:

public function authenticate(Request $request){
    $email=$request->post('email');
    $password=$request->post('password');

    $result=Admin::where(['email'=>$email,'password'=>$password])->get();
    if(isset($result['0']->id)){
        $request->session()->put('ADMIN_LOGIN',true);
        $request->session()->put('ADMIN_ID',$result['0']->id);
        return redirect('admin');
    }else{
        $request->session()->flash('error','Please enter valid login details');
        return redirect('admin-login');
    }
}

标签: phpmysqllaravel

解决方案


您必须通过电子邮件找到管理员,如下所示:

$admin = Admin::where(['email'=>$email])->first();

然后比较哈希

if ($admin && Hash::check($admin->password, $password)) {
   // ... logged in
} else {
   // ... not legged in
}

推荐阅读