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