લેખ

લારેવેલ મિડલવેર તે કેવી રીતે કાર્ય કરે છે

Laravel મિડલવેર એ એક મધ્યવર્તી એપ્લિકેશન સ્તર છે જે વપરાશકર્તાની વિનંતી અને એપ્લિકેશનના પ્રતિભાવ વચ્ચે હસ્તક્ષેપ કરે છે.

આનો અર્થ એ છે કે જ્યારે વપરાશકર્તા (Laravel વ્યુ) સર્વર (Laravel નિયંત્રક) ને વિનંતી કરે છે, ત્યારે વિનંતી મિડલવેર દ્વારા જશે. આ રીતે મિડલવેર તપાસ કરી શકે છે કે વિનંતી પ્રમાણિત છે કે નહીં: 

  • જો વપરાશકર્તાની વિનંતી પ્રમાણિત છે, તો વિનંતી બેકએન્ડ પર મોકલવામાં આવે છે;
  • જો વપરાશકર્તાની વિનંતી અધિકૃત છે, તો મિડલવેર વપરાશકર્તાને લોગિન સ્ક્રીન પર રીડાયરેક્ટ કરશે.

Laravel તમને પરવાનગી આપે છે defiપ્રમાણીકરણ સિવાય વિવિધ કાર્યો કરવા માટે પૂર્ણ કરો અને વધારાના મિડલવેરનો ઉપયોગ કરો. 

Laravel મિડલવેર, જેમ કે પ્રમાણીકરણ અને CSRF રક્ષણ, ડિરેક્ટરીમાં સ્થિત છે એપ્લિકેશન/Http/મિડલવેર .

તેથી અમે કહી શકીએ કે મિડલવેર એ HTTP વિનંતી ફિલ્ટર છે, જેના દ્વારા શરતોને ચકાસવી અને ક્રિયાઓ કરવી શક્ય છે.

મિડલવેર બનાવવું

નવું મિડલવેર બનાવવા માટે અમે નીચેનો આદેશ ચલાવીએ છીએ:

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

અમે બનાવીએ છીએ middleware અને અમે તેને કહીએ છીએ CheckAge, artisan અમને નીચે પ્રમાણે જવાબ આપશે:

ઉપરની વિન્ડો બતાવે છે કે મિડલવેર નામ સાથે સફળતાપૂર્વક બનાવવામાં આવ્યું છે ” ઉંમર તપાસો "

ચેકએજ મિડલવેર બનાવવામાં આવ્યું છે કે નહીં તે જોવા માટે, એપ્લિકેશન/Http/મિડલવેર ફોલ્ડરમાં પ્રોજેક્ટ પર જાઓ, અને તમે નવી બનાવેલી ફાઇલ જોશો.

નવી બનાવેલી ફાઇલમાં નીચેનો કોડ છે

<?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 . $middleware મિલકત વૈશ્વિક મિડલવેર અને માલિકીની નોંધણી કરવા માટે વપરાય છે $routeMiddleware રૂટ-વિશિષ્ટ મિડલવેરની નોંધણી કરવા માટે વપરાય છે.

ગ્લોબલ મિડલવેરની નોંધણી કરવા માટે, $middleware પ્રોપર્ટીના અંતે વર્ગની યાદી બનાવો.

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

તમને પણ ગમશે:

ઇનોવેશન ન્યૂઝલેટર
નવીનતા પરના સૌથી મહત્વપૂર્ણ સમાચારને ચૂકશો નહીં. તેમને ઇમેઇલ દ્વારા પ્રાપ્ત કરવા માટે સાઇન અપ કરો.

તાજેતરના લેખો

બાળકો માટે રંગીન પૃષ્ઠોના ફાયદા - તમામ ઉંમરના લોકો માટે જાદુની દુનિયા

રંગ દ્વારા સુંદર મોટર કૌશલ્ય વિકસાવવાથી બાળકોને લેખન જેવી વધુ જટિલ કુશળતા માટે તૈયાર કરવામાં આવે છે. રંગ કરવા માટે…

2 મે 2024

ભાવિ અહીં છે: શિપિંગ ઉદ્યોગ વૈશ્વિક અર્થતંત્રમાં કેવી રીતે ક્રાંતિ લાવી રહ્યો છે

નૌકાદળ ક્ષેત્ર એ સાચી વૈશ્વિક આર્થિક શક્તિ છે, જેણે 150 અબજના બજાર તરફ નેવિગેટ કર્યું છે...

1 મે 2024

પ્રકાશકો અને OpenAI આર્ટિફિશિયલ ઇન્ટેલિજન્સ દ્વારા પ્રક્રિયા કરાયેલ માહિતીના પ્રવાહને નિયંત્રિત કરવા માટે કરાર પર હસ્તાક્ષર કરે છે

ગયા સોમવારે, ફાઇનાન્શિયલ ટાઇમ્સે OpenAI સાથેના સોદાની જાહેરાત કરી હતી. FT તેના વિશ્વ કક્ષાના પત્રકારત્વને લાઇસન્સ આપે છે...

30 એપ્રિલ 2024

ઓનલાઈન ચુકવણીઓ: સ્ટ્રીમિંગ સેવાઓ તમને કાયમ માટે કેવી રીતે ચૂકવણી કરે છે તે અહીં છે

લાખો લોકો સ્ટ્રીમિંગ સેવાઓ માટે ચૂકવણી કરે છે, માસિક સબ્સ્ક્રિપ્શન ફી ચૂકવે છે. સામાન્ય અભિપ્રાય છે કે તમે…

29 એપ્રિલ 2024

તમારી ભાષામાં ઇનોવેશન વાંચો

ઇનોવેશન ન્યૂઝલેટર
નવીનતા પરના સૌથી મહત્વપૂર્ણ સમાચારને ચૂકશો નહીં. તેમને ઇમેઇલ દ્વારા પ્રાપ્ત કરવા માટે સાઇન અપ કરો.

અમને અનુસરો