我已经为拥有个人访问权限的用户正确设置了它,但是想要保护所有api路由。阅读文档听起来像Client Credentials Grant Tokens是我需要的。我的.env
文件中有客户端ID和客户端密钥;我已使用client
添加了\Laravel\Passport\Http\Middleware\CheckClientCredentials::class
中间件,并将其应用于某些api路由。
我正在使用Vue和axios。
如何获取和设置我需要访问这些受保护的api路由的令牌?
答案 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/