Laravel Hash:check总是返回false



我在做dd((Dump and Die,它给我返回了不同的哈希。我不知道原因是我的控制器和Seeder无法检测到错误,但我正在学习如何处理创建我的第一个api的laravel。*

<?php
namespace AppHttpControllers;
use AppUser;
use IlluminateHttpRequest;
use AppHttpControllersAuth;
use AppHash;
class ApiLoginController extends Controller
{
public function login(Request $request){
$usuario = User::where('email', $request->email)->first();
if($usuario && Hash::check($request->senha, $usuario->password))
{
return response()->json($usuario);
}
return response()->json(['messagem' => 'Erro']);
}
}
<?php
use IlluminateDatabaseSeeder;
use AppUser;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{

$user = new User;
$user->name = 'Hernandes';
$user->email = 'hernandes@gmail.com';
$user->password = bcrypt('12345');
$user->save();
}
}

你好,我更改了代码,但它不起作用。我查看了文档,但仍然无法,结果仍然是错误的,我想再了解一下我能做什么,感谢您的帮助

ApiLoginController

<?php
namespace AppHttpControllers;
use Hash;
use AppUser;
use IlluminateHttpRequest;
use AppHttpControllersAuth;

class ApiLoginController extends Controller
{
public function login(Request $request){
$usuario = User::where('email', $request->email)->first();
if($usuario && hash::check($request->senha, $usuario->senha)){
return response()->json($usuario);
}
return response()->json(['messagem' => 'Erro']);
}

}

用户TableSeeder

<?php
use IlluminateDatabaseSeeder;
use AppUser;
class UsersTableSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{

$user = new User;
$user->name = 'Hernandes';
$user->email = 'hernandes@gmail.com';
$user->password = Hash::make('password');        
$user->save();
}

}

在控制器中,以下条件存在一些问题:

if($usuario && hash::check($request->senha, $usuario->senha)){

  1. hash::check()应为Hash::check()
  2. 您正在使用$usuario->senha。但在播种机中,您将田地保存为password。哪个是正确的
  3. 问题中未显示刀片视图或请求。请确保您正在名为senha的文件中传递密码。否则,您将无法在$request->senha中获得任何值

提示:在检查哈希之前,您可以先使用dd($request->senha, $usuario->senha);查看它们是否包含正确的值。

您在保存时对值进行b加密,并在登录控制器上检查哈希值。它们是两种不同的算法。有关更多信息,请参阅我对原始问题的评论。将您的用户->保存方法更改为password=Hash::make('userpassword'(并检查登录控制器中的哈希,或者在登录控制器中解密密码并保持您的用户保存方法不变。