[英]Laravel 8 API REST Login
大家好,我在使用 Laravel 8 制作 API 時遇到了一些麻煩,似乎我的 auth()->attempt 不理解我的 $data 這是我正在執行的代碼部分,我沒有使用表用戶,我正在使用表 Usuario,它已經在提供者中設置,它應該看到我的類 Usuario 你能看到我沒有看到的嗎?
public function registrar(Request $request)
{
$this->validate($request, [
'nome' => 'required|min:4',
'email' => 'required|email',
'senha' => 'required|min:8',
'telefone' => 'required|min:8'
]);
$user = Usuario::create([
'nome' => $request->nome,
'email' => $request->email,
'senha' => Hash::make($request->senha),
'telefone' => $request->telefone
]);
$token = $user->createToken('LaravelAuthApp')->accessToken;
return response()->json(['token' => $token], 200);
}
/**
* Login Req
*/
public function login(Request $request)
{
$data = [
'email' => $request->email,
'senha' => $request->senha
];
//dd($data);
//$credentials = request('email','senha');
dd(Auth::attempt($data));
if (!Auth::attempt($data)) {
return response()->json(['error' => 'Unauthorised'], 401);
} else {
$token = auth()->user()->createToken('LaravelAuthApp')->accessToken;
return response()->json(['token' => $token], 200);
}
}
如果有幫助,這是我的模型
<?php
namespace App\Models;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
class Usuario extends Authenticatable
{
use HasFactory, Notifiable, HasApiTokens;
const TIPO = ['adm','usuario'];
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'nome',
'tipo',
'email',
'senha',
'telefone',
'imagem',
'cpf',
'rg',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'senha',
'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verificado' => 'datetime',
];
public function membro(){
return $this->hasMany(Membro::class);
}
public function ingresso(){
return $this->hasMany(Ingresso::class);
}
}
嘗試這個
$data = [
'email' => $request->email,
'password' => $request->senha
];
作為attempt()
函數查找email
和password
密鑰
並更改數據庫password
您可以通過auth()->login($user);
手動登錄auth()->login($user);
功能
$user = Usuario::where('email',$request->email)->first();
if(!$user){
return response()->json(['error' => 'user not found.'], 401);
}
if (!Hash::check($request->senha,$user->senha)) {
return response()->json(['error' => 'Unauthorised'], 401);
} else {
auth()->login($user);
$token = auth()->user()->createToken('LaravelAuthApp')->accessToken;
return response()->json(['token' => $token], 200);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.