প্রবন্ধ

লারাভেল মিডলওয়্যার এটি কিভাবে কাজ করে

লারাভেল মিডলওয়্যার হল একটি মধ্যবর্তী অ্যাপ্লিকেশন স্তর যা ব্যবহারকারীর অনুরোধ এবং অ্যাপ্লিকেশনের প্রতিক্রিয়ার মধ্যে হস্তক্ষেপ করে।

এর মানে হল যে যখন ব্যবহারকারী (Laravel ভিউ) সার্ভারে (Laravel কন্ট্রোলার) একটি অনুরোধ করে, তখন অনুরোধটি মিডলওয়্যারের মাধ্যমে যাবে। এইভাবে মিডলওয়্যার অনুরোধটি প্রমাণীকৃত কিনা তা পরীক্ষা করতে পারে: 

  • যদি ব্যবহারকারীর অনুরোধটি প্রমাণীকৃত হয়, অনুরোধটি ব্যাকএন্ডে পাঠানো হয়;
  • যদি ব্যবহারকারীর অনুরোধ অননুমোদিত হয়, মিডলওয়্যার ব্যবহারকারীকে লগইন স্ক্রিনে পুনঃনির্দেশ করবে।

লারাভেল আপনাকে অনুমতি দেয় defiপ্রমাণীকরণ ব্যতীত বিভিন্ন কাজ সম্পাদন করার জন্য অতিরিক্ত মিডলওয়্যার শেষ করুন এবং ব্যবহার করুন। 

Laravel মিডলওয়্যার, যেমন প্রমাণীকরণ এবং CSRF সুরক্ষা, ডিরেক্টরিতে অবস্থিত অ্যাপ/Http/মিডলওয়্যার .

তাই আমরা বলতে পারি যে মিডলওয়্যার হল একটি HTTP অনুরোধ ফিল্টার, যার মাধ্যমে শর্তগুলি যাচাই করা এবং ক্রিয়া সম্পাদন করা সম্ভব।

মিডলওয়্যার তৈরি করা

একটি নতুন মিডলওয়্যার তৈরি করতে আমরা নিম্নলিখিত কমান্ডটি চালাই:

php artisan make:middleware <name-of-middleware>

আমরা তৈরি করি middleware এবং আমরা এটা কল CheckAge, artisan নিম্নলিখিত হিসাবে আমাদের উত্তর দেবে:

উপরের উইন্ডোটি দেখায় যে মিডলওয়্যারটি নাম দিয়ে সফলভাবে তৈরি করা হয়েছে ” চেক এজ "।

চেকএজ মিডলওয়্যার তৈরি হয়েছে কি না তা দেখতে, অ্যাপ/এইচটিটিপি/মিডলওয়্যার ফোল্ডারে প্রজেক্টে যান এবং আপনি নতুন তৈরি ফাইলটি দেখতে পাবেন

নতুন তৈরি করা ফাইলটিতে নিম্নলিখিত কোড রয়েছে

<?php

namespace App\Http\Middleware;

use Closure;

class CheckAge
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request);
    }
}

মিডলওয়্যার ব্যবহার করুন

মিডলওয়্যার ব্যবহার করতে, আমাদের এটি নিবন্ধন করতে হবে।

লারাভেলে দুটি ধরণের মিডলওয়্যার রয়েছে:

  • Middleware globale
  • Route Middleware

Il গ্লোবাল মিডলওয়্যার অ্যাপ্লিকেশন থেকে প্রতিটি HTTP অনুরোধে কার্যকর করা হবে, যখন রুট মিডলওয়্যার একটি নির্দিষ্ট পথে বরাদ্দ করা হবে। মিডলওয়্যার এ নিবন্ধিত হতে পারে app/Http/Kernel.php. এই ফাইলটিতে দুটি বৈশিষ্ট্য রয়েছে $মিডলওয়্যার e $routeMiddleware . $মিডলওয়্যার সম্পত্তি বিশ্বব্যাপী মিডলওয়্যার এবং মালিকানা নিবন্ধন করতে ব্যবহৃত হয় $routeMiddleware রুট-নির্দিষ্ট মিডলওয়্যার নিবন্ধন করতে ব্যবহৃত হয়।

গ্লোবাল মিডলওয়্যার নিবন্ধন করতে, $মিডলওয়্যার সম্পত্তির শেষে ক্লাসটি তালিকাভুক্ত করুন।

protected $middleware = [
        \App\Http\Middleware\TrustProxies::class,
        \App\Http\Middleware\CheckForMaintenanceMode::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];

রুট-নির্দিষ্ট মিডলওয়্যার নিবন্ধন করতে, $routeMiddleware সম্পত্তিতে কী এবং মান যোগ করুন।

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
    ];

আমরা তৈরি করেছি চেক এজ আগের উদাহরণে। আমরা এখন মিডলওয়্যার রুট সম্পত্তিতে এটি নিবন্ধন করতে পারি। এই জাতীয় নিবন্ধনের জন্য কোডটি নীচে দেখানো হয়েছে।

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'Age' => \App\Http\Middleware\CheckAge::class,
    ];

মিডলওয়্যার পরামিতি

আমরা মিডলওয়্যারের সাথে প্যারামিটারগুলিও পাস করতে পারি। 

উদাহরণস্বরূপ, যদি আপনার অ্যাপ্লিকেশনটিতে ব্যবহারকারী, অ্যাডমিন, সুপার অ্যাডমিন ইত্যাদির মতো বিভিন্ন ভূমিকা থাকে। এবং আপনি ভূমিকার উপর ভিত্তি করে ক্রিয়াটি প্রমাণীকরণ করতে চান, আপনি মিডলওয়্যারের সাথে পরামিতিগুলি পাস করে এটি করতে পারেন। 

আমাদের তৈরি মিডলওয়্যারে নিম্নলিখিত ফাংশন রয়েছে এবং আমরা আর্গুমেন্টের পরে কাস্টম আর্গুমেন্ট পাস করতে পারি $পরের .

    public function handle($request, Closure $next)
    {
        return $next($request);
    }

এখন আসুন রোল প্যারামিটারটিকে একটি নতুন মিডলওয়্যারে সেট করার চেষ্টা করুন যা আমরা স্ক্র্যাচ থেকে তৈরি করতে যাচ্ছি, তারপর নিম্নলিখিত কমান্ডটি চালিয়ে ভূমিকা মিডলওয়্যার তৈরি করতে এগিয়ে যান

হ্যান্ডেল পদ্ধতিটি নিম্নরূপ পরিবর্তন করুন

<?php

namespace App\Http\Middleware;
use Closure;

class RoleMiddleware {
   public function handle($request, Closure $next, $role) {
      echo "Role: ".$role;
      return $next($request);
   }
}

আমরা প্যারামিটার যোগ করেছি $role, এবং পদ্ধতির ভিতরে লাইন echo আউটপুটে ভূমিকার নাম লিখতে।

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.

এখন একটি নির্দিষ্ট পথের জন্য RoleMiddleware মিডলওয়্যার নিবন্ধন করা যাক

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'Age' => \App\Http\Middleware\CheckAge::class,
        'Role' => \App\Http\Middleware\RoleMiddleware::class,
    ];

এখন পরামিতি সহ মিডলওয়্যার পরীক্ষা করতে, আমাদের একটি অনুরোধ এবং একটি প্রতিক্রিয়া তৈরি করতে হবে। প্রতিক্রিয়া অনুকরণ করতে আসুন একটি নিয়ামক তৈরি করি যাকে আমরা TestController বলব

php artisan make:controller TestController --plain

এইমাত্র কার্যকর করা কমান্ডটি ফোল্ডারের ভিতরে একটি নতুন নিয়ামক তৈরি করবে app/Http/TestController.php, এবং পদ্ধতি পরিবর্তন করুন index লাইনের সাথে echo "<br>Test Controller.";

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\Http\Controllers\Controller;

class TestController extends Controller {
   public function index() {
      echo "<br>Test Controller.";
   }
}

প্রতিক্রিয়া সেট আপ করার পরে, আমরা ফাইলটি সম্পাদনা করে অনুরোধ তৈরি করি routes.phpযোগ করে route role

Route::get('role',[
   'middleware' => 'Role:editor',
   'uses' => 'TestController@index',
]);

এই মুহুর্তে আমরা URL পরিদর্শন করে উদাহরণ চেষ্টা করতে পারি http://localhost:8000/role

এবং ব্রাউজারে আমরা দুটি দেখতে পাব echo

Role editor
Test Controller

টার্মিনেবল মিডলওয়্যার

Il terminable Middleware ব্রাউজারে প্রতিক্রিয়া পাঠানোর পরে কিছু কাজ করে। এটি পদ্ধতির সাথে একটি মিডলওয়্যার তৈরি করে অর্জন করা যেতে পারে মিডলওয়্যারে সমাপ্ত করুন। Il terminable Middleware সাথে নিবন্ধিত হতে হবে middleware বিশ্বব্যাপী পদ্ধতি terminate দুটি আর্গুমেন্ট পাবেন $ অনুরোধ e $প্রতিক্রিয়া। 

পদ্ধতি Terminate নিম্নলিখিত কোডে দেখানো হিসাবে তৈরি করা আবশ্যক।

php artisan make:middleware TerminateMiddleware

মিডলওয়্যার তৈরি হয়ে গেলে app/Http/Middleware/TerminateMiddleware.php আসুন কোডটি নিম্নরূপ পরিবর্তন করি

<?php

namespace App\Http\Middleware;
use Closure;

class TerminateMiddleware {
   public function handle($request, Closure $next) {
      echo "Executing statements of handle method of TerminateMiddleware.";
      return $next($request);
   }
   
   public function terminate($request, $response) {
      echo "<br>Executing statements of terminate method of TerminateMiddleware.";
   }
}

এই ক্ষেত্রে আমাদের একটি পদ্ধতি আছে handle এবং একটি পদ্ধতি terminate দুটি পরামিতি সহ $request e $response.

এখন মিডলওয়্যার নিবন্ধন করা যাক

protected $routeMiddleware = [
        'auth' => \App\Http\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
        'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class,
        'can' => \Illuminate\Auth\Middleware\Authorize::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class,
        'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
        'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class,
        'Age' => \App\Http\Middleware\CheckAge::class,
        'Role' => \App\Http\Middleware\RoleMiddleware::class,
        'terminate' => \App\Http\Middleware\TerminateMiddleware::class,
    ];

এখন আমাদের প্রতিক্রিয়া অনুকরণ করতে নিয়ামক তৈরি করতে হবে

php artisan make:controller XYZController --plain

ক্লাসের বিষয়বস্তু পরিবর্তন করা

class XYZController extends Controller {
   public function index() {
      echo "<br>XYZ Controller.";
   }
}

এখন আমাদের ফাইলটি সম্পাদনা করতে হবে routes/web.php অনুরোধ সক্রিয় করার জন্য প্রয়োজনীয় রুট যোগ করা

Route::get('terminate',[
   'middleware' => 'terminate',
   'uses' => 'XYZController@index',
]);

এই মুহুর্তে আমরা URL পরিদর্শন করে উদাহরণ চেষ্টা করতে পারি http://localhost:8000/terminate

এবং ব্রাউজারে আমরা নিম্নলিখিত লাইনগুলি দেখতে পাব

Executing statements of handle method of TerminateMiddleware
XYZController
Executing statements of terminate method of TerminateMiddleware

Ercole Palmeri

আপনি পছন্দ করতে পারেন:

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.

সাম্প্রতিক নিবন্ধ

ক্যাটানিয়া পলিক্লিনিকে অ্যাপল দর্শকের সাথে অগমেন্টেড রিয়েলিটিতে উদ্ভাবনী হস্তক্ষেপ

অ্যাপল ভিশন প্রো কমার্শিয়াল ভিউয়ার ব্যবহার করে ক্যাটানিয়া পলিক্লিনিকে একটি চক্ষুরোগ অপারেশন করা হয়েছিল...

3 মে 2024

শিশুদের জন্য রঙিন পৃষ্ঠাগুলির উপকারিতা - সব বয়সের জন্য একটি জাদু বিশ্ব

রঙের মাধ্যমে সূক্ষ্ম মোটর দক্ষতার বিকাশ শিশুদের লেখার মতো জটিল দক্ষতার জন্য প্রস্তুত করে। রঙ…

2 মে 2024

ভবিষ্যত এখানে: শিপিং শিল্প কীভাবে বৈশ্বিক অর্থনীতিতে বিপ্লব ঘটাচ্ছে

নৌ সেক্টর একটি সত্যিকারের বৈশ্বিক অর্থনৈতিক শক্তি, যা 150 বিলিয়ন বাজারের দিকে নেভিগেট করেছে...

1 মে 2024

প্রকাশকরা এবং OpenAI কৃত্রিম বুদ্ধিমত্তা দ্বারা প্রক্রিয়াকৃত তথ্যের প্রবাহ নিয়ন্ত্রণ করতে চুক্তি স্বাক্ষর করে

গত সোমবার, ফাইন্যান্সিয়াল টাইমস ওপেনএআই-এর সাথে একটি চুক্তি ঘোষণা করেছে। FT তার বিশ্বমানের সাংবাদিকতার লাইসেন্স দেয়...

30 এপ্রিল 2024

আপনার ভাষায় উদ্ভাবন পড়ুন

উদ্ভাবন নিউজলেটার
উদ্ভাবনের সবচেয়ে গুরুত্বপূর্ণ খবর মিস করবেন না। ইমেল দ্বারা তাদের পেতে সাইন আপ করুন.

আমাদের অনুসরণ