Nếu các bạn cần một Laravel Package mạnh về xác thực với full Oauth2 thì có lẽ Laravel Passport là sự lựa chọn hợp lý. Kế tiếp các bài về Laravel, hôm nay mình sẽ hướng dẫn các bạn cài đặt và sử dụng là Laravel Passport.
Laravel Passport là gì?
Laravel Passport là một package PHP cung cấp xác thực Oauth2 đầy đủ nhất cho ứng dụng laravel của bạn. Nó được phát triển bởi 2 nhà lập trình viên Andy Millington và Simon Hamp.
Hướng dẫn cài đặt Laravel Passport
Chú ý: Đây là hướng dẫn trên bản Laravel 9.x mới nhất tại thời điểm viết bài này.
Bước 1: Cài đặt Laravel Passport package qua Composer
Bắt đầu cài đặt chúng ta sử dụng công cụ composer.
composer require laravel/passport
Bước 2: Migrate database
php artisan migrate
Chú ý bạn nhớ tạo database và configure database trước nhé!
Sau khi cài đặt nó sẽ tạo ra các bảng CSDL như sau:
Bước 3: Cài đặt Laravel Passport
php artisan passport:install
Command này sẽ tạo encryption key cần cho việc tạo access token.
Bước 4: Cấu hình Laravel sử dụng Passport
Mặc đinh Laravel sử dụng Sanctum để xây dựng API, giờ chúng ta chuyển nó sang Passport.
Sửa file app/Models/User.php thay thế
use Laravel\Sanctum\HasApiTokens;
Bằng:
use Laravel\Passport\HasApiTokens;
Cuối cùng đoạn code model của chúng ta giống như là:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasApiTokens, HasFactory, Notifiable; }
Bước 5: Đăng ký Routes cho những API Auth cần thiết cho Passport
Sửa file app/Providers/AuthServiceProvider.php
<?php namespace App\Providers; use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider; use Illuminate\Support\Facades\Gate; use Laravel\Passport\Passport; class AuthServiceProvider extends ServiceProvider { /** * The policy mappings for the application. * * @var array */ protected $policies = [ 'App\Models\Model' => 'App\Policies\ModelPolicy', ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); if (! $this->app->routesAreCached()) { Passport::routes(); } } }
Bước 6: Cuối cùng bạn set drive api của Laravel sang Passport
Sửa file config/auth.php
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],
Bước 7: Sử dụng Client UUIDs
php artisan passport:install --uuids
Sau khi chạy lệnh trên thì Passport sẽ sử dụng UUIDs thay cho Client Model primary key.
Nó sẽ yêu cầu bạn phải rollback lại tất cả các bảng CSDL
Bước 8: Deploy Passport
php artisan passport:keys
Khi deploy passport lần đầu tiên bạn cần phải chạy lệnh: passport:keys. Nó sẽ tạo encryption key để tạo các access token.
Để xây dựng hệ thống xác thực (Login/Register/Logout) các bạn vui lòng xem bài viết bên dưới.
Nguồn vinasupport.com