source

Laravel Passport 및 클라이언트 자격 증명으로 자체 API를 사용하는 방법

goodcode 2022. 8. 8. 20:04
반응형

Laravel Passport 및 클라이언트 자격 증명으로 자체 API를 사용하는 방법

퍼스널 액세스 토큰을 가진 사용자를 위해 올바르게 설정했지만 모든 api 루트를 보호하고 싶습니다.클라이언트 자격 증명 부여 토큰처럼 들리는 문서를 읽는 것이 필요합니다.에 클라이언트 ID와 클라이언트 시크릿이 있습니다..env파일; 추가했습니다.client미들웨어 사용\Laravel\Passport\Http\Middleware\CheckClientCredentials::class이를 일부 API 루트에 적용했습니다.

나는 Vue와 Axios를 사용하고 있다.

이러한 보호된 API 루트에 액세스하기 위해 필요한 토큰을 취득하고 설정하려면 어떻게 해야 합니까?

Laravel 문서는 "당신의 API를 소비한다"는 것에 대해 명확하지 않습니다.나는 또한 며칠 동안 구글을 검색했고 심지어 라라카스트도 구독했다.도움이 안 돼요.이제 작동했어, 이건 내 노트에 있던 쓰레기야.

순서 1 - Passport 설치

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

순서 2 - /app/User.php 편집

use HasApiTokens,Notifiable

스텝 3 - /app/Providers/Auth Service Provider 편집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 문서:

이 인증 방식을 사용할 경우 기본 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/

언급URL : https://stackoverflow.com/questions/46131610/how-to-consume-own-api-with-laravel-passport-and-client-credentials

반응형