Laravel Passport 多用户身份验证

时间:2021-05-03 12:44:38

标签: php laravel api android-studio laravel-passport

我目前正在构建一个移动应用程序并使用 laravel 8 作为我的后端我正在创建一个登录注册和注销 api 以允许用户从移动应用程序登录。我使用护照作为我的身份验证卫士。注册 api 有效但登录 api api 不断告诉我未经授权。这是我的控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Adusum;
use Illuminate\Support\Facades\Auth;
use Hash; 
use Validator;

class AdusumController extends Controller
{
public $successStatus = 200;
/**
     * Register adusum api
     * 
     * @return \Illuminate\Http\Response
     */
    public function register(Request $request)
    {
        $validator = Validator::make($request->all(), [
            'username' => 'required',
            'fullname' => 'required',
            'date_of_birth' => 'required',
            'date_of_entry' => 'required',
            'name_of_provincial' => 'required',
            'current_community' => 'required',
            'password' => 'required', 
            'c_password' => 'required|same:password',
        ]);
        if ($validator->fails()) {
            return response()->json(['error'=>$validator->errors()], 401);
        }
        $input = $request->all();
           $input['password'] = bcrypt($input['password']);
           $user = Adusum::create($input);
           $success['token'] = $user->createToken('MyApp')->accessToken;
           $success['username'] =  $user->username;
           return response()->json(['success'=>$success], $this-> successStatus);
    }
/**
     * Login adusum api
     * 
     * @return \Illuminate\Http\Response
     */    
    public function login()
    {
     if (Auth::guard('adusum')->attempt(['username' => request('username'), 'password' => request('password')])) {
        config(['auth.guards.adusum-api.provider' => 'adusums']);

        $adusum = Adusum::select('adusums.*')->find(auth()->guard('adusum')->user()->username);
         $success['token'] =  $adusum->createToken('MyApp',['adusum'])-> accessToken;
         return response()->json(['success' => $success], $this-> successStatus);
      } else {
         return response()->json(['error' => ['Username and Password are Wrong.']], 200);
      }
    }
}

这是我的模型

<?php

namespace App;

use Illuminate\Contracts\Auth\UserProvider;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;

class Adusum extends Authenticatable
{
    use HasFactory, Notifiable, HasApiTokens;

    protected $table = "adusums";

    /**
     * The attributes that are mass assignable.
     * 
     * @var array
     */
    protected $fillable = [
        'username',
        'fullname',
        'date_of_birth',
        'date_of_entry',
        'name_of_provincial',
        'current_community',
        'password',
    ];

    
}

任何帮助将不胜感激

0 个答案:

没有答案