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 آشنا کرده باشد.