ലേഖനങ്ങൾ

ലാറവെൽ മിഡിൽവെയർ ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നു

ഉപയോക്താവിന്റെ അഭ്യർത്ഥനയ്ക്കും ആപ്ലിക്കേഷന്റെ പ്രതികരണത്തിനും ഇടയിൽ ഇടപെടുന്ന ഒരു ഇന്റർമീഡിയറ്റ് ആപ്ലിക്കേഷൻ ലെയറാണ് ലാറവെൽ മിഡിൽവെയർ.

ഇതിനർത്ഥം ഉപയോക്താവ് (Laravel view) സെർവറിലേക്ക് (Laravel കൺട്രോളർ) ഒരു അഭ്യർത്ഥന നടത്തുമ്പോൾ, അഭ്യർത്ഥന മിഡിൽവെയറിലൂടെ പോകും എന്നാണ്. അഭ്യർത്ഥന പ്രാമാണീകരിച്ചിട്ടുണ്ടോ ഇല്ലയോ എന്ന് മിഡിൽവെയറിന് ഇതുവഴി പരിശോധിക്കാൻ കഴിയും: 

  • ഉപയോക്താവിന്റെ അഭ്യർത്ഥന ആധികാരികമാക്കിയിട്ടുണ്ടെങ്കിൽ, അഭ്യർത്ഥന ബാക്കെൻഡിലേക്ക് അയയ്ക്കും;
  • ഉപയോക്താവിന്റെ അഭ്യർത്ഥന ആധികാരികതയില്ലാത്തതാണെങ്കിൽ, മിഡിൽവെയർ ഉപയോക്താവിനെ ലോഗിൻ സ്ക്രീനിലേക്ക് റീഡയറക്ട് ചെയ്യും.

Laravel നിങ്ങളെ അനുവദിക്കുന്നു defiപ്രാമാണീകരണം ഒഴികെയുള്ള വിവിധ ജോലികൾ പൂർത്തിയാക്കാൻ അധിക മിഡിൽവെയർ ഉപയോഗിക്കുക. 

ആധികാരികത, 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);
    }
}

മിഡിൽവെയർ ഉപയോഗിക്കുക

മിഡിൽവെയർ ഉപയോഗിക്കുന്നതിന്, ഞങ്ങൾ അത് രജിസ്റ്റർ ചെയ്യേണ്ടതുണ്ട്.

Laravel-ൽ രണ്ട് തരം മിഡിൽവെയർ ഉണ്ട്:

  • 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,
    ];

ഇപ്പോൾ പാരാമീറ്റർ ഉപയോഗിച്ച് മിഡിൽവെയർ പരിശോധിക്കുന്നതിന്, ഞങ്ങൾ ഒരു അഭ്യർത്ഥനയും പ്രതികരണവും സൃഷ്ടിക്കേണ്ടതുണ്ട്. പ്രതികരണം അനുകരിക്കുന്നതിന്, നമുക്ക് ടെസ്റ്റ് കൺട്രോളർ എന്ന് വിളിക്കുന്ന കൺട്രോളർ സൃഷ്ടിക്കാം

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

നിങ്ങൾക്കിഷ്ടപ്പെട്ടേക്കാം:

ഇന്നൊവേഷൻ വാർത്താക്കുറിപ്പ്
നവീകരണത്തെക്കുറിച്ചുള്ള ഏറ്റവും പ്രധാനപ്പെട്ട വാർത്തകൾ നഷ്ടപ്പെടുത്തരുത്. ഇമെയിൽ വഴി അവ സ്വീകരിക്കുന്നതിന് സൈൻ അപ്പ് ചെയ്യുക.

സമീപകാല ലേഖനങ്ങൾ

കാറ്റാനിയ പോളിക്ലിനിക്കിൽ ആപ്പിൾ വ്യൂവർക്കൊപ്പം ഓഗ്മെൻ്റഡ് റിയാലിറ്റിയിൽ നൂതനമായ ഇടപെടൽ

ആപ്പിൾ വിഷൻ പ്രോ കൊമേഴ്‌സ്യൽ വ്യൂവർ ഉപയോഗിച്ചുള്ള ഒഫ്താൽമോപ്ലാസ്റ്റി ഓപ്പറേഷൻ കാറ്റാനിയ പോളിക്ലിനിക്കിൽ നടത്തി.

20 മെയ് 2013

കുട്ടികൾക്കുള്ള കളറിംഗ് പേജുകളുടെ പ്രയോജനങ്ങൾ - എല്ലാ പ്രായക്കാർക്കും മാന്ത്രിക ലോകം

കളറിംഗ് വഴി മികച്ച മോട്ടോർ കഴിവുകൾ വികസിപ്പിക്കുന്നത് എഴുത്ത് പോലെയുള്ള കൂടുതൽ സങ്കീർണ്ണമായ കഴിവുകൾക്ക് കുട്ടികളെ സജ്ജമാക്കുന്നു. നിറം കൊടുക്കാൻ...

20 മെയ് 2013

ഭാവി ഇതാ: ഷിപ്പിംഗ് വ്യവസായം ആഗോള സമ്പദ്‌വ്യവസ്ഥയെ എങ്ങനെ വിപ്ലവം ചെയ്യുന്നു

നാവിക മേഖല ഒരു യഥാർത്ഥ ആഗോള സാമ്പത്തിക ശക്തിയാണ്, അത് 150 ബില്യൺ വിപണിയിലേക്ക് നാവിഗേറ്റ് ചെയ്തു...

20 മെയ് 2013

ആർട്ടിഫിഷ്യൽ ഇൻ്റലിജൻസ് പ്രോസസ്സ് ചെയ്യുന്ന വിവരങ്ങളുടെ ഒഴുക്ക് നിയന്ത്രിക്കുന്നതിനുള്ള കരാറുകളിൽ പ്രസാധകരും ഓപ്പൺഎഐയും ഒപ്പുവെക്കുന്നു

കഴിഞ്ഞ തിങ്കളാഴ്ച, ഫിനാൻഷ്യൽ ടൈംസ് ഓപ്പൺഎഐയുമായി ഒരു കരാർ പ്രഖ്യാപിച്ചു. FT അതിൻ്റെ ലോകോത്തര പത്രപ്രവർത്തനത്തിന് ലൈസൻസ് നൽകുന്നു…

ഏപ്രിൽ 29 ഏപ്രിൽ

നിങ്ങളുടെ ഭാഷയിൽ ഇന്നൊവേഷൻ വായിക്കുക

ഇന്നൊവേഷൻ വാർത്താക്കുറിപ്പ്
നവീകരണത്തെക്കുറിച്ചുള്ള ഏറ്റവും പ്രധാനപ്പെട്ട വാർത്തകൾ നഷ്ടപ്പെടുത്തരുത്. ഇമെയിൽ വഴി അവ സ്വീകരിക്കുന്നതിന് സൈൻ അപ്പ് ചെയ്യുക.

പിന്തുടരുക ഞങ്ങളെ

സമീപകാല ലേഖനങ്ങൾ

ടാഗ്