簡體   English   中英

Laravel 8 API REST 登錄

[英]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()函數查找emailpassword密鑰

並更改數據庫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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM