Lumen Passport API가 포함된 Vue 앱(1부)

12124 단어 vuelaravellumen

왜 루멘인가?



Lumen은 API 빌드를 위한 Laravel의 제거된 버전입니다. 이는 경량 프레임워크를 만듭니다. 저는 현재 프로젝트에서 Lumen을 사용하고 있으며 이 기회를 통해 제가 배운 것 중 일부를 공유하고 싶습니다.

우리가 만들 것



사용자가 연락처를 저장할 수 있는 Vue 앱을 만들 것입니다. 이것은 주로 인증 및 CRUD 작업을 다룹니다. 스타일링을 위해 Tailwindcss 을 사용합니다. 이 파트 I에서는 루멘 패스포트를 설정합니다.

더 이상 고민하지 않고 ...

루멘 프로젝트 만들기



Lumen을 방문하여 설치 지침을 따르십시오.

루멘 생성기 설치



이전에 지적했듯이 Laravel의 많은 것들이 Lumen에서 누락되었습니다. 이 패키지는 일부 Laravel 장인 명령을 Lumen에 가져옵니다. 프로젝트의 루트에 있는 터미널에서 다음 명령을 실행합니다.

composer require flipbox/lumen-generator



bootstrap/app.php에서 다음을 추가합니다.

$app->register(Flipbox\LumenGenerator\LumenGeneratorServiceProvider::class);


이제 장인의 명령이 있습니다. 앱 키를 생성할 수 있습니다.

php artisan key:generate



버전 제어를 사용하여 변경 사항을 추적하는 것은 항상 좋은 습관입니다.

postman을 사용하여 엔드포인트가 작동하는지 확인할 수도 있습니다.

루멘 패스포트 설치



Dusterio의 패키지를 사용할 것입니다. Github 링크here를 방문하여 설치를 따르거나 자습서를 계속 진행할 수 있습니다.

composer require dusterio/lumen-passport



Laravel Passport 및 Lumen Passport 활성화



파일 경로: bootstrap/app.php

Facade, eloquent 및 routeMiddleware를 활성화하려면 이 줄의 주석을 제거하십시오.

$app->withFacades();

$app->withEloquent();

$app->routeMiddleware([
    'auth' => App\Http\Middleware\Authenticate::class,
]);


서비스 공급자도 주석 해제하십시오.

$app->register(App\Providers\AppServiceProvider::class);
$app->register(App\Providers\AuthServiceProvider::class);
$app->register(App\Providers\EventServiceProvider::class);


여권 공급자 등록

$app->register(Laravel\Passport\PassportServiceProvider::class);
$app->register(Dusterio\LumenPassport\PassportServiceProvider::class);


Laravel Passport ^7.3.2 이상



bootastrap/app.php에서 이것을 주석 처리하십시오.

$app = new Laravel\Lumen\Application(
    dirname(__DIR__)
);


대신 이것을 사용하십시오

$app = new \Dusterio\LumenPassport\Lumen7Application(
    dirname(__DIR__)
);


Laravel Passport 마이그레이션 및 설치



데이터베이스(예: MySQL)에서 Passport용 새 테이블 생성



데이터베이스를 생성하고 .env에 세부 정보를 입력합니다.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=lumen_passport_blog
DB_USERNAME=root
DB_PASSWORD=root


php artisan migrate



인증 구성



config/auth.php에 다음을 추가합니다(config 폴더와 auth.php 파일이 없는 경우 생성해야 할 수 있음).

<?php
return [
    'defaults' => [
        'guards' => 'api'
    ],
    'guards' => [
        'api' => [
            'driver' => 'passport',
            'provider' => 'users', // default
        ],
    ],
    'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => \App\Models\User::class
        ]
    ],
];


Lumen은 구성 파일을 자동으로 로드하지 않으므로 구성을 로드합니다.
bootstrap/app.php에서 아래 코드를 추가합니다.
(가급적 $app->configure('app') 아래. 패턴을 따릅니다.)

$app->configure(auth)


Passport용 암호화 키 및 기타 항목 설치



php artisan passport:install



개인 액세스 클라이언트 ID 및 비밀, 암호 그랜드 클라이언트 ID 및 비밀을 출력합니다. .env 파일이나 안전한 곳에 저장할 수 있습니다. 암호 부여 클라이언트 ID 및 암호는 사용자에 대한 액세스 토큰을 생성하는 데 사용됩니다.

경로 등록



앱/공급자/AuthServiceProvider.php에서
부팅 방법 내부에 경로를 추가합니다(가급적이면 다른 코드 앞에).

use Dusterio\LumenPassport\LumenPassport;

LumenPassport::routes($this->app);


사용자 모델



사용자 모델에 HasApiTokens 특성을 추가합니다.

use Laravel\Passport\HasApiTokens;

class User extends Model implements AuthenticatableContract, AuthorizableContract
{
    use HasApiTokens, Authenticatable, Authorizable, HasFactory;

    /* rest of the model */
}


사용자 모델의 채울 수 있는 배열에 '암호'를 추가합니다.

사용자 마이그레이션 생성



php artisan make:migration create_users_table



마이그레이션 테이블을 수정하여 이름, 이메일 및 비밀번호 필드를 추가하십시오.

Schema::create('users', function (Blueprint $table) {
    $table->id();
    $table->string('email')->unique();
    $table->string('name');
    $table->string('password');
    $table->timestamps();
});


그런 다음 마이그레이션합니다.

php artisan migrate



마지막으로 이메일과 해시된 비밀번호로 사용자를 생성합니다. 키를 생성하려면 이것이 필요합니다. 이를 위해 팅커를 사용할 수 있습니다.

>>> use App\Models\User
>>> use Illuminate\Support\Facades\Hash
>>> User::create(['name'=>'John Doe', 'email'=>'[email protected]', 'password'=>Hash::make('password')])


Postman으로 토큰 생성




Postman을 열고 http://your_base_url/oauth/token에 POST 요청을 보냅니다. 위 이미지와 같이 필드를 입력합니다. 사용자 이름은 우리가 만든 사용자의 이메일입니다. 클라이언트 암호와 클라이언트 ID는 이전에 생성한 것입니다. 올바른 비밀번호 부여 ID 및 비밀을 사용하십시오.

요청을 보내면 액세스 토큰이 생성됩니다. 우리는 해냈다! 2부에서는 등록 및 로그인에 대해 계속 설명합니다.

좋은 웹페이지 즐겨찾기