حمیده دلیری
حمیده دلیری
خواندن ۲ دقیقه·۳ ماه پیش

استفاده از Middleware در لاراول برای مدیریت احراز هویت

در این پست قصد داریم به بررسی روش‌های بهینه برای استفاده از Middleware در لاراول بپردازیم. این روش‌ها به شما کمک می‌کنند تا احراز هویت کاربران را به شکل ساده‌تری مدیریت کنید و از تکرار کدهای اضافی جلوگیری کنید.

۱. استفاده از Middleware در فایل Route

به جای اینکه در هر کنترلر به صورت جداگانه Middleware را اعمال کنید، می‌توانید آن را مستقیماً در فایل‌های `routes/web.php` یا `routes/api.php` به مسیرها یا گروهی از مسیرها اضافه کنید.

use App\Http\Controllers\ProfileController;

اعمال میان‌افزار auth به مسیرهای خاص

Route::middleware(['auth'])->group(function () { Route::get('/profile/additional-info', [ProfileController::class, 'additionalInfo'])->name('profile.additional-info'); Route::post('/profile/update', [ProfileController::class, 'updateProfile'])->name('profile.update'); });


۲. استفاده از Middleware به صورت Global

می‌توانید یک Middleware را به صورت کلی و برای همه درخواست‌ها یا بخشی از برنامه در فایل `app/Http/Kernel.php` اضافه کنید.

namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $middlewareGroups = [ 'web' => [ // سایر میان‌افزارها \App\Http\Middleware\EnsureUserIsAuthenticated::class, ], ]; protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'customAuth' => \App\Http\Middleware\EnsureUserIsAuthenticated::class, ]; }


۳. استفاده از Middleware در کامپوننت‌های Livewire

برای کامپوننت‌های Livewire، می‌توانید از متد `boot` یا `mount` برای اعمال Middleware استفاده کنید.

namespace App\Http\Livewire; use Livewire\Component; use Illuminate\Support\Facades\Auth; class CheckoutComponent extends Component { public static function boot() { // اعمال میان‌افزار auth برای اطمینان از لاگین بودن کاربر static::middleware('auth'); } public function mount() { // در اینجا نیازی به چک کردن نیست $this->cart = Auth::user()->openCart(); } public function render() { return view('livewire.checkout-component'); } }


۴. ایجاد یک Controller Base کلاس

اگر چندین کنترلر دارید که نیاز به یک Middleware مشابه دارند، می‌توانید یک `BaseController` ایجاد کنید که Middleware را در آن اعمال کرده و سپس بقیه کنترلرها را از آن ارث‌بری کنید.

namespace App\Http\Controllers; use Illuminate\Routing\Controller as BaseController; class AuthenticatedController extends BaseController { public function __construct() { $this->middleware('auth'); } }

حالا از این کنترلر ارث‌بری کنید.

class ProfileController extends AuthenticatedController { public function additionalInfo() { // لاگیک برای مدیریت اطلاعات اضافی پروفایل } public function updateProfile() { // لاگیک برای به‌روزرسانی پروفایل } }

با استفاده از این روش‌ها، می‌توانید به صورت متمرکزتر و بهینه‌تر از Middleware‌ها در لاراول استفاده کنید، بدون اینکه نیاز به تکرار کد در هر کنترلر یا کامپوننت داشته باشید. این کار باعث می‌شود که کد شما تمیزتر و نگهداری آن آسان‌تر باشد.


احراز هویتلاراولمیان افزار
شاید از این پست‌ها خوشتان بیاید