Dev to webs {Coding…}

บทเรียนฟรีด้านการพัฒนาซอฟต์แวร์ ที่ครอบคลุมเนื้อหาหลากหลาย ตั้งแต่การเขียนโค้ดพื้นฐานไปจนถึงเทคนิคขั้นสูง

บทที่ 6: การเพิ่มการ Authentication ใน API ด้วย Passport

🔹 เกริ่นนำ

การรักษาความปลอดภัยของ 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 เข้าถึงแบบปลอดภัย