Tworzenie API w Symfony z JWT: Szczegółowy Przewodnik Krok po Kroku

Cześć! Ten wpis jest bezpośrednim rozszerzeniem mojego filmu na YouTube, w którym pokazuję, jak tworzyć API w Symfony i korzystać z JWT. Jeśli jeszcze go nie widziałeś, zapraszam do obejrzenia: Tutaj.

Poniżej znajduje się przewodnik krok po kroku, który pomoże Ci skonfigurować API w Symfony z wykorzystaniem JWT.

Zacznij od zainstalowania wymaganych pakietów za pomocą komend:

composer require jms/serializer-bundle
composer require friendsofsymfony/rest-bundle
composer require symfony/maker-bundle
composer require symfony/orm-pack -W
composer require lexik/jwt-authentication-bundle

Następnie skonfiguruj zmienne środowiskowe dla bazy danych w pliku .env i utwórz bazę danych za pomocą komendy:

bin/console doctrine:database:create

Ustaw pakiet odpowiedzialny za API w pliku: 

config/packages/fos_rest.yaml

Utwórz użytkownika za pomocą komendy:

bin/console make:user

Przeprowadź migrację danych za pomocą komend:

bin/console make:migration
bin/console doctrine:migrations:migrate

Wygeneruj klucze JWT za pomocą komendy: 

bin/console lexik:jwt:generate-keypair

Dodaj ścieżkę logowania do pliku routes.yaml:

api_login_check:
     path: /api/login_check

Utwórz kontroler PanelController za pomocą komendy:

bin/console make:controller

 i dodaj do niego następujące adnotacje:

/**
  * @Route("/api", name="api_")
  */

Skonfiguruj plik security.yaml:

login:
     pattern: ^/api/login
     stateless: true
     json_login:
         check_path: /api/login_check
         success_handler: lexik_jwt_authentication.handler.authentication_success
         failure_handler: lexik_jwt_authentication.handler.authentication_failure
 
 api:
     pattern:   ^/api
     stateless: true
     jwt: ~
 
 access_control:
     - { path: ^/api/login, roles: PUBLIC_ACCESS  }
     - { path: ^/api,       roles: IS_AUTHENTICATED_FULLY }

Dodaj użytkownika do bazy danych z rolą ["IS_AUTHENTICATED_FULLY"].
Hasło możesz wygenerować za pomocą komendy:

bin/console security:hash-password

Uruchom serwer za pomocą komendy:

symfony server:start

Zaloguj się za pomocą poniższego żądania POST:

POST https://127.0.0.1:8000/api/login_check
Content-Type: application/json 
{ 
    "username": "asphp",
    "password": "test1234"
}

Testuj, czy wszystko działa poprawnie, wysyłając żądanie GET:

GET https://127.0.0.1:8000/api/panel
Authorization: Bearer TOKEN

Mam nadzieję, że ten przewodnik okaże się przydatny!

Dołącz do Newslettera! Co tydzień świeże newsy ze świata PHP

X