مارک پلاس

تکنولوژی نوین اینترنتی

Passport احراز هویت API

دسته‌بندی‌ها

Passport احراز هویت API
Passport احراز هویت API

Passport یک بسته قدرتمند لاراول است که برای احراز هویت APIها از طریق OAuth2 استفاده می‌شود. این بسته به شما این امکان را می‌دهد که به راحتی APIهای خود را ایمن کرده و از روش‌های مختلف احراز هویت مانند توکن‌های دسترسی (Access Tokens) و تجدید توکن‌ها (Refresh Tokens) بهره‌برداری کنید. در ادامه، نحوه استفاده از Laravel Passport برای احراز هویت API را شرح خواهیم داد.


فصل 1: نصب Laravel Passport

برای استفاده از Passport در لاراول، ابتدا باید آن را نصب کنید. برای این کار مراحل زیر را دنبال کنید:

  1. نصب بسته Passport: برای نصب Passport، دستور زیر را در ترمینال اجرا کنید:

    bash
    composer require laravel/passport
  2. اجرای دستورات مایگریشن: پس از نصب، دستورات مایگریشنی که برای ایجاد جداول لازم برای OAuth2 در پایگاه داده مورد نیاز است، اجرا کنید:

    bash
    php artisan migrate
  3. انتشار فایل‌های تنظیمات: پس از مایگریشنی که انجام شد، شما باید فایل‌های تنظیمات Passport را منتشر کنید:

    bash
    php artisan passport:install

    این دستور، توکن‌های استفاده‌شده برای احراز هویت را ایجاد می‌کند و کلیدهای خصوصی و عمومی لازم برای OAuth2 را تولید می‌کند.


فصل 2: تنظیمات مدل User

برای اینکه Passport بتواند به درستی در لاراول کار کند، باید مدل User خود را تغییر دهید تا از HasApiTokens استفاده کند. این کار به مدل شما اجازه می‌دهد تا توکن‌های API را ایجاد و مدیریت کند.

  1. افزودن HasApiTokens به مدل User:

    در فایل app/Models/User.php، باید HasApiTokens را از Laravel Passport وارد کنید:

    php
    use Laravel\Passport\HasApiTokens; class User extends Authenticatable { use HasApiTokens; }

فصل 3: تنظیمات Auth و Passport

برای استفاده از Passport در لاراول، باید تنظیمات احراز هویت را به‌روزرسانی کنید تا از گارد api استفاده کند.

  1. به‌روزرسانی فایل config/auth.php:

    به فایل config/auth.php بروید و گارد api را به passport تغییر دهید:

    php
    'guards' => [ 'api' => [ 'driver' => 'passport', 'provider' => 'users', ], ],

فصل 4: ساخت توکن‌های دسترسی

حالا که همه چیز آماده است، می‌توانیم از Passport برای ساخت و استفاده از توکن‌های دسترسی استفاده کنیم.

  1. ایجاد توکن دسترسی (Access Token):

    برای ایجاد توکن دسترسی، ابتدا باید یک روت POST برای احراز هویت و گرفتن توکن ایجاد کنید. در اینجا یک مثال از استفاده از Passport برای ایجاد توکن دسترسی است:

    در فایل routes/api.php یک روت جدید برای لاگین و دریافت توکن اضافه کنید:

    php
    Route::post('login', 'AuthController@login');

    در AuthController، متدی برای لاگین و ایجاد توکن اضافه کنید:

    php
    namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\User; use Illuminate\Support\Facades\Auth; use Laravel\Passport\Passport; class AuthController extends Controller { public function login(Request $request) { // اعتبارسنجی داده‌های ورود $credentials = $request->only('email', 'password'); if (Auth::attempt($credentials)) { // ایجاد و بازگرداندن توکن دسترسی $user = Auth::user(); $token = $user->createToken('YourAppName')->accessToken; return response()->json(['token' => $token]); } return response()->json(['error' => 'Unauthorized'], 401); } }

    این متد createToken توکنی ایجاد می‌کند که با استفاده از آن می‌توان به API دسترسی پیدا کرد.


فصل 5: محافظت از روت‌ها با Passport

برای محافظت از روت‌ها و اطمینان از اینکه کاربران باید ابتدا وارد سیستم شوند، می‌توانید از میانه auth:api استفاده کنید. این میانه بررسی می‌کند که آیا درخواست حاوی یک توکن معتبر است یا خیر.

  1. محافظت از روت‌ها با میانه auth:api:

    در فایل routes/api.php، روت‌هایی که می‌خواهید حفاظت شوند را به‌صورت زیر تعریف کنید:

    php
    Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); });

    در اینجا، روت /user تنها برای کاربرانی که توکن معتبر دارند قابل دسترسی است.


فصل 6: تجدید توکن (Refresh Token)

برای احراز هویت طولانی مدت و تجدید توکن‌ها، می‌توانید از Refresh Tokens استفاده کنید. در Passport، هنگامی که توکن دسترسی منقضی می‌شود، می‌توانید از توکن تازه (refresh token) برای دریافت توکن جدید استفاده کنید.

  1. گرفتن و استفاده از Refresh Token:

    برای این کار ابتدا باید روش احراز هویت از نوع password grant را پیکربندی کنید، که در آن یک refresh token برای دریافت توکن جدید ارسال می‌شود.


نتیجه‌گیری

Passport ابزاری بسیار مفید برای احراز هویت APIهای لاراول است که با استفاده از OAuth2، امنیت بالایی را برای APIهای شما فراهم می‌آورد. این بسته به شما این امکان را می‌دهد که از توکن‌های دسترسی و تجدید توکن‌ها استفاده کرده و به راحتی از APIهای خود محافظت کنید.

با دنبال کردن مراحل نصب، پیکربندی و استفاده از Passport، می‌توانید به سادگی سیستم احراز هویت خود را برای APIهای لاراول راه‌اندازی کنید.

محتوای مرتبط

پست‌های مرتبط