در لاراول، برای احراز هویت API دو روش اصلی Passport و Sanctum وجود دارند که هرکدام برای شرایط مختلف مناسب هستند. در اینجا، نحوه استفاده از هر دو را توضیح خواهیم داد.
فصل 1: استفاده از Laravel Passport برای احراز هویت API
Passport یک بسته کامل برای احراز هویت API است که از OAuth2 استفاده میکند. این روش معمولاً برای پروژههایی با نیاز به احراز هویت پیچیدهتر و چندین سطح دسترسی مناسب است.
1.1. نصب و راهاندازی Passport
-
نصب بسته Passport:
ابتدا با استفاده از Composer بسته Passport را نصب کنید:
-
انتشار فایلهای پیکربندی:
برای انتشار فایلهای پیکربندی Passport، دستور زیر را اجرا کنید:
-
اجرای مایگریشنها:
Passport برای ایجاد جداول مربوط به احراز هویت نیاز به مایگریشن دارد. بنابراین، دستور زیر را اجرا کنید:
-
تنظیمات مدل User:
در مدل
User، باید ازLaravel\Passport\HasApiTokensاستفاده کنید تا این مدل از قابلیتهای Passport برای تولید و تأیید توکنها بهرهمند شود. برای این کار، کد زیر را به مدلUserاضافه کنید: -
راهاندازی Passport:
سپس در فایل
AuthServiceProvider، باید Passport را راهاندازی کنید. در متدboot، کد زیر را اضافه کنید: -
تنظیمات API Guard:
در فایل
config/auth.php، تنظیمات guard را به این صورت بهروز کنید:
1.2. ایجاد Client برای Passport
برای استفاده از Passport و تولید توکنها، باید یک client ایجاد کنید. از دستور زیر برای ایجاد client استفاده کنید:
این دستور یک Personal Access Token ایجاد میکند. به یاد داشته باشید که این کلیدها برای درخواستهای احراز هویت استفاده خواهند شد.
1.3. احراز هویت با Passport
-
ثبتنام و ورود کاربر:
برای ثبتنام یا ورود، از متد
createTokenاستفاده میکنیم تا توکن دسترسی ایجاد کنیم.مثال:
در اینجا:
-
توکن دسترسی برای کاربری که وارد شده است، تولید میشود.
-
این توکن بهعنوان پاسخ به کاربر باز میگردد.
-
-
احراز هویت با استفاده از Token در درخواستهای API:
حالا که توکن دسترسی دارید، میتوانید از آن در هدر درخواستها استفاده کنید:
این توکن باید در هدر HTTP ارسال شود تا بتوان از دسترسیهای محدود استفاده کرد.
1.4. استفاده از Passport برای احراز هویت در مسیرها
برای استفاده از احراز هویت در مسیرها، میتوانید از auth:api در مسیرهای خود استفاده کنید:
در اینجا، اگر کاربر توکن معتبری داشته باشد، به اطلاعات کاربری دسترسی خواهد داشت.
فصل 2: استفاده از Laravel Sanctum برای احراز هویت API
Sanctum یک راهحل سادهتر برای احراز هویت API است که معمولاً برای برنامههای تکصفحهای (SPA) و موبایلها مناسب است. برخلاف Passport، Sanctum پیچیدگی کمتری دارد و برای احراز هویت توکنهای ساده استفاده میشود.
2.1. نصب و راهاندازی Sanctum
-
نصب بسته Sanctum:
ابتدا بسته Sanctum را نصب کنید:
-
انتشار فایلهای پیکربندی:
پس از نصب، فایل پیکربندی Sanctum را منتشر کنید:
-
اجرای مایگریشنها:
Sanctum نیاز به جدول
personal_access_tokensدارد که باید با استفاده از مایگریشنها ایجاد شود: -
افزودن Middleware به فایل
api:در فایل
app/Http/Kernel.php، باید MiddlewareSanctumرا به گروهapiاضافه کنید: -
تنظیم مدل User:
در مدل
Userباید ازHasApiTokensاستفاده کنید تا قابلیت تولید و مدیریت توکنها را داشته باشید:
2.2. ایجاد توکن برای کاربر
برای ایجاد توکنهای شخصی، از متد createToken استفاده میکنیم. بهعنوان مثال، در متد login، میتوانیم این توکنها را برای کاربر ایجاد کنیم.
مثال:
2.3. احراز هویت با استفاده از توکن در Sanctum
برای احراز هویت با استفاده از Sanctum، کاربر باید توکنی را که از سیستم دریافت کرده است، در هدر درخواستهای خود ارسال کند:
2.4. استفاده از Sanctum برای احراز هویت در مسیرها
برای محدود کردن دسترسی به برخی از مسیرها، میتوانید از middleware auth:sanctum استفاده کنید:
این کد تضمین میکند که تنها کاربرانی که توکن معتبر دارند، قادر به دسترسی به اطلاعات خود هستند.
نتیجهگیری
-
Laravel Passport برای پروژههایی که نیاز به احراز هویت پیچیده و استفاده از OAuth2 دارند مناسب است. این روش به شما امکان میدهد که با سیستمهای خارجی نیز ارتباط برقرار کنید.
-
Laravel Sanctum برای پروژههای سادهتر و برنامههای تکصفحهای (SPA) که نیاز به احراز هویت ساده دارند مناسب است. این روش راهحلی سریع و ساده برای احراز هویت فراهم میکند.
هر دو روش امنیت بالا و عملکرد مناسبی دارند، اما انتخاب بین این دو بستگی به پیچیدگی نیازهای پروژه شما دارد.