Openappi-generator로 생성된 Laavel 7 프로젝트에서 Laavel Passport 사용
이 글에는 Github OpenAPITools/openapi-generator 생성된 계획에서 명령을 수행하는 등 라벨 패스포트를 사용한 인증을 사용할 수 있도록 하는 이전 절차가 담겼다.
Laravel 7 + Laravel Passport
공식
참고 자료
프로젝트 작성
openapi.yaml 디렉터리에서 다음 명령을 실행합니다
$ docker run --rm -v `pwd`:/work openapitools/openapi-generator-cli:latest generate -i /work/openapi.yaml -g php-laravel -o /work
$ sudo chown -R `whoami`:`whoami` ./lib
composer.json의 프로젝트 이름은 xxx/yyy
의 형식으로 개작되었다.passport 설치
$ cd ./lib
$ composer require laravel/passport:^9
최신 버전에서는 의존이 해결되지 않아 오류가 발생했기 때문에 v9를 명확하게 지정합니다.migrate
로컬은 sqlite로 합니다
.env.example 복사.env.local 만들기
~省略~
LOG_CHANNEL=stack
DB_CONNECTION=sqlite
CACHE_DRIVER=file
QUEUE_CONNECTION=sync
env를 만들면 링크를 만드는 것이 편리합니다$ ln -s .env.local .env
응용 키 생성$ php artisan key:generate
DB용 파일 추가$ touch ./database/database.sqlite
migrate$ php artisan migrate
passport의 초기화
$ php artisan passport:install --uuids
yes 를 입력하고 전진하면 DB 마이그레이션이 다시 수행됩니다.passport 설정
User.php를 생성할 때 존재하지 않기 때문에 스스로 만듭니다.
AuthServiceProvider의 boot에 Passport용routes를 추가합니다.
# いろいろ省略
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider
{
# 省略
public function boot() {
$this->registerPolicies();
Passport::routes();
}
}
양단에passport를 사용하는 인증으로 수정되었습니다. 'guads' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
]
]
User 모델 생성하기
openappi-generator에서 생성된 코드는 자신이 정의하지 않으면 User 모델이 없기 때문에 스스로 설정합니다.
직접 정의한 경우 생성된 모델을 수정합니다.
<?php
namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
protected $fillable = [
"name",
"email",
"password",
];
}
authdriver 참조 모델 변경하기
省略
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
]
]
省略
루팅 완료 확인
부팅
$ php artisan serve
$ curl -s http://localhost:8000/oauth/tokens -H "Accept: application/json" | jq
{
"message": "Unauthenticated."
}
$ curl http://localhost:8000/api/user -H "Accept: application/json" | jq
{
"message": "Unauthenticated."
}
초기 사용자 등록
응용 프로그램 사양에 따라 사용자 등록을 위한 API 또는 명령을 구현하여 초기 사용자를 등록합니다.
클라이언트 만들기
암호 인증을 사용할 수 있는 사용자를 만듭니다.
$ php artisan passport:client --password
클라이언트 이름과 같은 클라이언트 이름을 계속 입력하고client id와 시크릿을 출력하면 미리 기다립니다.토큰을 발행하다
등록된 사용자 정보와 보내진client id와 시크릿 요청 영패를 사용합니다.
$ curl -X POST http://localhost:8000/oauth/token \
-H "Accept: application/json" \
-d "grant_type=password" \
-d "client_id=<client id>" \
-d "client_secret=<client secret>" \
-d "username=<登録したユーザのID>" \
-d "password=<登録したユーザのパスワード>" \
-d "scope="
응답accesstoken과refresh-토큰이 답장하면 OK.
Reference
이 문제에 관하여(Openappi-generator로 생성된 Laavel 7 프로젝트에서 Laavel Passport 사용), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/honeytrap15/articles/af639c05301536텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)