我在做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)){
hash::check()
应为Hash::check()
- 您正在使用
$usuario->senha
。但在播种机中,您将田地保存为password
。哪个是正确的 - 问题中未显示刀片视图或请求。请确保您正在名为
senha
的文件中传递密码。否则,您将无法在$request->senha
中获得任何值
提示:在检查哈希之前,您可以先使用dd($request->senha, $usuario->senha);
查看它们是否包含正确的值。
您在保存时对值进行b加密,并在登录控制器上检查哈希值。它们是两种不同的算法。有关更多信息,请参阅我对原始问题的评论。将您的用户->保存方法更改为password=Hash::make('userpassword'(并检查登录控制器中的哈希,或者在登录控制器中解密密码并保持您的用户保存方法不变。