如何使用Laravel Passport和客户端凭据使用自己的api?

时间:2017-09-09 14:18:20

标签: vuejs2 axios laravel-passport laravel-5.5

我已经为拥有个人访问权限的用户正确设置了它,但是想要保护所有api路由。阅读文档听起来像Client Credentials Grant Tokens是我需要的。我的.env文件中有客户端ID和客户端密钥;我已使用client添加了\Laravel\Passport\Http\Middleware\CheckClientCredentials::class中间件,并将其应用于某些api路由。

我正在使用Vue和axios。

如何获取和设置我需要访问这些受保护的api路由的令牌?

1 个答案:

答案 0 :(得分:2)

Laravel文档真的不清楚“使用自己的API”。我也用Google搜索了几天甚至订阅了Laracasts。没有帮助。我现在正在使用它,这是我的笔记中的转储。

第1步 - 安装Passport

composer require laravel/passport
php artisan migrate
php artisan passport:install

第2步 - 编辑/app/User.php

use HasApiTokens,Notifiable

第3步 - 编辑/app/Providers/AuthServiceProvider.php

use Laravel\Passport\Passport;

public function boot()
{
    $this->registerPolicies();
    Passport::routes();
}

第4步 - 编辑/config/auth.php

enter code     'api' => [
    'driver' => 'passport',
    'provider' => 'users',
],

第5步 - 前端快速入门

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

第6步 - 编辑/resources/assets/js/app.js

require('./bootstrap');

window.Vue = require('vue');

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

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

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

const app = new Vue({
    el: '#app'
});

步骤7 - 认证路线和视图脚手架

php artisan make:auth

第8步 - 编辑/app/Http/Kernel.php

 protected $middlewareGroups = [
        'web' => [
            ...
            \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class,

第9步 - 编辑/routes/web.php(这可以回答你的问题)

// Authorization routes Laravel Passport
Auth::routes();

// Landing page
Route::get('/', function () { return view('welcome');});

// Auth protected routes
Route::group(['middleware' => ['web', 'auth']], function () {
    Route::get('home', 'HomeController@index')->name('home');
    Route::get('example', function(){ return view('example'); });
}
//(stolen from /vendor/laravel/passport/src/RouteRegistrar.php - forAuthorization method)

第10步 - 编译资产

npm i -g npm
npm install
npm run dev

第11步 - 什么都没有。您不必在VueJS和Axios方面做任何事情。

你可以这样做:

axios.get('URL_XYZ')
.then(response => {
    console.log(response.data);
});

Laravel docs:

  

使用此身份验证方法时,默认的Laravel JavaScript脚手架会指示Axios始终发送X-CSRF-TOKEN和X-Requested-With标头。

来源:
https://laravel.com/docs/5.5/passport
https://www.itechempires.com/2017/09/laravel-5-5-api-user-authentication-passport-package/