JWT Authentication در Laravel: راهنمای کامل

یکی از روش‌های محبوب برای احراز هویت (Authentication) در برنامه‌های وب، استفاده از JSON Web Token یا JWT است. در این مقاله، نحوه پیاده‌سازی JWT Authentication در فریمورک محبوب Laravel را بررسی خواهیم کرد.

JWT چیست؟

JWT یک استاندارد باز برای انتقال اطلاعات بین دو طرف به صورت امن است. این اطلاعات به صورت یک JSON رمزگذاری شده و حاوی سه بخش اصلی است:

  • Header: شامل نوع توکن و الگوریتم رمزگذاری.
  • Payload: داده‌های کاربر یا اطلاعات دیگر.
  • Signature: امضای دیجیتال برای تضمین صحت داده‌ها.

چرا از JWT استفاده کنیم؟

مزایای اصلی استفاده از JWT عبارتند از:

  • سبکی و سرعت بالا.
  • بدون نیاز به ذخیره در سرور (Stateless).
  • امکان استفاده در RESTful APIها.

نصب و راه‌اندازی JWT در Laravel

برای استفاده از JWT در پروژه لاراول، ابتدا باید کتابخانه jwt-auth نصب شود. دستور زیر را اجرا کنید:

composer require tymon/jwt-auth

انتشار فایل‌های تنظیمات

برای انتشار فایل تنظیمات، دستور زیر را اجرا کنید:

php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\LaravelServiceProvider"

ایجاد کلید مخفی

کلید مخفی برای امضای توکن‌ها ایجاد کنید:

php artisan jwt:secret

این دستور کلیدی را در فایل .env شما اضافه می‌کند.

پیاده‌سازی JWT Authentication

ایجاد کنترلر احراز هویت

با اجرای دستور زیر، کنترلری برای مدیریت عملیات ورود و ثبت‌نام ایجاد کنید:

php artisan make:controller AuthController

نمونه کد AuthController

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Tymon\JWTAuth\Facades\JWTAuth;

class AuthController extends Controller
{
    public function login(Request $request)
    {
        $credentials = $request->only('email', 'password');
        if (!$token = auth()->attempt($credentials)) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }
        return response()->json(['token' => $token]);
    }

    public function me()
    {
        return response()->json(auth()->user());
    }

    public function logout()
    {
        auth()->logout();
        return response()->json(['message' => 'Successfully logged out']);
    }
}

تنظیم مسیرها (Routes)

مسیرهای مربوطه را در فایل routes/api.php اضافه کنید:

Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:api')->group(function () {
    Route::get('/me', [AuthController::class, 'me']);
    Route::post('/logout', [AuthController::class, 'logout']);
});

نتیجه‌گیری

JWT راهکاری سریع و امن برای احراز هویت کاربران است. با پیاده‌سازی آن در Laravel، می‌توانید APIهایی مدرن و مقیاس‌پذیر ایجاد کنید. امیدواریم این مقاله شما را به خوبی با مفاهیم اولیه و پیاده‌سازی JWT Authentication آشنا کرده باشد.