🔹 เกริ่นนำ
การรักษาความปลอดภัยของ API เป็นสิ่งสำคัญ โดยเฉพาะเมื่อเปิดให้บุคคลภายนอกหรือแอปอื่นเรียกใช้งาน Laravel Passport เป็น official package จาก Laravel ที่ให้ระบบ OAuth2 พร้อมใช้งานสำหรับ API Authentication รองรับทั้ง Password Grant, Client Credentials และ Personal Access Tokens
บทนี้จะพาคุณติดตั้งและใช้งาน Passport เพื่อปกป้อง API ของคุณอย่างปลอดภัยและยืดหยุ่น
🔸 การติดตั้ง Laravel Passport
composer require laravel/passport
php artisan migrate
php artisan passport:install
🔸 ตั้งค่าใน User Model
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
🔸 Register Passport ใน AuthServiceProvider
use Laravel\Passport\Passport;
public function boot()
{
Passport::routes();
}
🔸 ตั้งค่า config/auth.php
'guards' => [
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
🔸 สร้าง route สำหรับ login และ protected API
Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:api')->group(function () {
Route::get('/user', function (Request $request) {
return $request->user();
});
});
🔸 ตัวอย่าง login
public function login(Request $request)
{
if (Auth::attempt($request->only('email', 'password'))) {
$user = Auth::user();
$token = $user->createToken('access_token')->accessToken;
return response()->json(['token' => $token]);
}
return response()->json(['error' => 'Unauthorized'], 401);
}
💡 Passport ใช้ระบบ OAuth2 เต็มรูปแบบ เหมาะกับ API ที่ต้องเปิดให้ third-party เข้าถึงแบบปลอดภัย