当我通过 API 从 laravel 中的数据库中获取用户数据时出现错误

Posted

技术标签:

【中文标题】当我通过 API 从 laravel 中的数据库中获取用户数据时出现错误【英文标题】:i am getting error when i am fetching user data from database in laravel through API 【发布时间】:2020-06-02 07:21:03 【问题描述】:

Hello Guys 现在正在研究 laravel api,一切都很完美,只是我面临的一个问题是,当我输入错误的用户名和密码时,我能够获取用户数据,但是当我输入正确的用户信息时,我遇到了异常,那就是无效证件。请帮帮我

这是我的模型代码

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class email extends Model

    protected $table = 'users';

& 这是我的控制器代码

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\email;

class EmailController extends Controller

   public function databyemail(Request $request)   
       $data = email::where('email', $request->email)->first();  
       if($data->password === bcrypt($request->password)) 
       
           return response()->json($data);
        
       else
             
           return response()->json(['error' => 'Incorrect credentials!']);  
            
           

 

【问题讨论】:

【参考方案1】:

你能不能试试Hash::check的方法来匹配密码。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Hash;
use App\email;

class EmailController extends Controller

   public function databyemail(Request $request)   
        $data = email::where('email', $request->email)->first(); 


        if( Hash::check( $request->password, $data->password ) ) 
            return response()->json($data);
        else
            return response()->json(['error' => 'Incorrect credentials!']);  
        
    

【讨论】:

@MuhammadSajidLakha 我认为您还有另一个问题。你的 laravel 版本是什么?首先,在匹配密码之前尝试dd($data)。并检查是否获取用户数据? @MuhammadSajidLakha 您应该在控制器类之前添加Use Hash; email)->first(); if($data->password === bcrypt($request->password)) return response()->json($data); else return response()->json(['error' => '不正确的凭据!']); 我的laravel版本是5.7 @MuhammadSajidLakha 我已经更新了我的答案。如果发生任何错误,请添加完整的错误状态。

以上是关于当我通过 API 从 laravel 中的数据库中获取用户数据时出现错误的主要内容,如果未能解决你的问题,请参考以下文章