今天我们要进行 Laravel Api 认证 请按照以下步骤进行应用程序身份验证和授权
第一步
执行以下命令:
composer require laravel/passport
php artisan migrate
php artisan passport:install
第二部
修改 config/auth.php 文件中的 Gurds:
...
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
...
第三步
app/User.php
<?php
namespace App;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable {
use Notifiable, HasApiTokens;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'password',
];
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = [
'password', 'remember_token',
];
/**
* The attributes that should be cast to native types.
*
* @var array
*/
protected $casts = [
'email_verified_at' => 'datetime',
];
}
第四步
app/Repositories/User/UserRepositoryInterface.php
<?php
namespace App\Repositories\User;
use Illuminate\Http\Request;
interface UserRepositoryInterface {
public function register(Request $request);
public function login(Request $request);
public function refreshToken(Request $request);
public function details();
public function logout(Request $request);
public function response($data, int $statusCode);
public function getTokenAndRefreshToken(string $email, string $password);
public function sendRequest(string $route, array $formParams);
public function getOClient();
}
第五步
创建 app/Repositories/User/UserRepository.php 文件
<?php
namespace App\Repositories\User;
use App\User;
use GuzzleHttp\Client;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Laravel\Passport\Client as OClient;
use GuzzleHttp\Exception\ClientException;
use App\Repositories\User\UserRepositoryInterface;
class UserRepository implements UserRepositoryInterface {
const SUCCUSUS_STATUS_CODE = 200;
const UNAUTHORISED_STATUS_CODE = 401;
const BASE_URL = "htt