1. 创建 Client 的命令
php artisan passport:client
Bash
  1. 生成 key 并创建一个密码类型的 client 和个人令牌

这个命令是组合调用了上面的命令1 + 命令2

php artisan passport:install
Bash

我们这里执行安装命令:

php artisan passport:install
Bash

接着需要把 Laravel\Passport\HasApiTokens Trait 添加到 App\User 模型中;
app/User.php

<?php

namespace App;

use Laravel\Passport\HasApiTokens;
use Illuminate\Notifications\Notifiable;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use Notifiable, HasApiTokens;
    // ...
}
PHP

在 AuthServiceProvider 的 boot 方法中调用 Passport::routes() ;

<?php

namespace App\Providers;

use Laravel\Passport\Passport;
use Illuminate\Support\Facades\Gate;
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;

class AuthServiceProvider extends ServiceProvider
{
    //..
    public function boot()
    {
        $this->registerPolicies();

        Passport::routes();
    }
    // ...
}
PHP

这一步主要是注册路由的;
我们可以通过 route:list 命令查看注册的路由;

如果我们有需要修改这些方法的时候;
我们可以在 routes/api.php 覆盖这些路由即可;
最后一步配置把 config/auth.php 中 guards 的 api 的 driver 选项改为 passport ;

'guards' => [
    'web' => [
        'driver' => 'session',
        'provider' => 'users',
    ],

    'api' => [
        'driver' => 'passport',
        'provider' => 'users',
    ],
],
PHP

Passport 还提供了 vue 前端组件;

php artisan vendor:publish --tag=passport-components
Bash

在 resources/js/app.js 文件中注册组件;
resources/js/app.js

// ...
Vue.component(
    'passport-clients',
    require('./components/passport/Clients.vue').default
);

Vue.component(
    'passport-authorized-clients',
    require('./components/passport/AuthorizedClients.vue').default
);

Vue.component(
    'passport-personal-access-tokens',
    require('./components/passport/PersonalAccessTokens.vue').default
);
// ...
JavaScript

这里写一个管理 Client 的页面;
routes/web.php

// ...
Route::view('clients', 'clients');
PHP

resources/views/clients.blade.php

@extends('layouts.app')

@section('content')
    <passport-clients></passport-clients>
@endsection
HTML
    内容分页 1 2 3
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。