Greinar

Laravel millihugbúnaður hvernig það virkar

Laravel millihugbúnaður er milliforritslag sem grípur inn á milli beiðni notandans og svars forritsins.

Þetta þýðir að þegar notandinn (Laravel view) leggur fram beiðni til netþjónsins (Laravel stjórnandi), mun beiðnin fara í gegnum millibúnaðinn. Þannig getur millihugbúnaðurinn athugað hvort beiðnin sé staðfest eða ekki: 

  • ef beiðni notandans er staðfest er beiðnin send til bakenda;
  • ef beiðni notandans er óstaðfest mun millihugbúnaðurinn vísa notandanum á innskráningarskjáinn.

Laravel gerir þér kleift defiklára og nota viðbótarmiðlun til að framkvæma margvísleg verkefni nema auðkenningu. 

Laravel millivörur, eins og auðkenning og CSRF vernd, eru staðsett í skránni app/Http/miðlbúnaður .

Við getum því sagt að millihugbúnaðurinn sé http beiðnisía, þar sem hægt er að sannreyna aðstæður og framkvæma aðgerðir.

Að búa til millihugbúnað

Til að búa til nýjan millibúnað keyrum við eftirfarandi skipun:

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

Við búum til middleware og við köllum það CheckAge, artisan mun svara okkur sem hér segir:

Glugginn hér að ofan sýnir að millihugbúnaðurinn hefur verið búinn til með nafninu " Athugaðu Aldur ".

Til að sjá hvort CheckAge millihugbúnaðurinn er búinn til eða ekki, farðu í verkefnið í app/Http/Middleware möppunni og þú munt sjá nýstofnaða skrána

Nýstofnaða skráin hefur eftirfarandi kóða

<?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);
    }
}

Notaðu millibúnað

Til að nota millihugbúnað þurfum við að skrá hann.

Það eru tvær tegundir af millibúnaði í Laravel:

  • Middleware globale
  • Route Middleware

Il alþjóðleg millihugbúnaður verður keyrt á hverri HTTP beiðni frá forritinu, á meðan Leið Middleware verður úthlutað tiltekinni leið. Hægt er að skrá miðbúnað á app/Http/Kernel.php. Þessi skrá inniheldur tvo eiginleika $miðjubúnaður e $routeMiddleware . The $middleware eign er notað til að skrá alþjóðlegt millihugbúnað og eignarhald $routeMiddleware er notað til að skrá leiðarsértækan millibúnað.

Til að skrá alþjóðlegt millihugbúnað skaltu skrá flokkinn í lok $middleware eignarinnar.

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

Til að skrá leiðarsértæka millihugbúnað skaltu bæta lyklinum og gildinu við $routeMiddleware eignina.

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

Við sköpuðum Athugaðu Aldur í fyrra dæminu. Við getum nú skráð þetta í millihugbúnaðarleiðareignina. Kóðinn fyrir slíka skráningu er sýndur hér að neðan.

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

Millibúnaðarfæribreytur

Við getum líka sent breytur með Middleware. 

Til dæmis, ef forritið þitt hefur mismunandi hlutverk eins og notandi, admin, ofur admin o.s.frv. og þú vilt auðkenna aðgerðina út frá hlutverkinu, þú getur gert það með því að senda færibreyturnar með millibúnaðinum. 

Miðlunin sem við bjuggum til inniheldur eftirfarandi aðgerð og við getum sent sérsniðnar röksemdir á eftir rifrildinni $næst .

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

Nú skulum við reyna að stilla hlutverkabreytuna á nýjan millihugbúnað sem við ætlum að búa til frá grunni og halda síðan áfram að búa til hlutverkamillibúnað með því að keyra eftirfarandi skipun

Breyttu handfangsaðferðinni sem hér segir

<?php

namespace App\Http\Middleware;
use Closure;

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

við bættum við færibreytunni $role, og inni í aðferðinni línunni echo að skrifa úttakið nafn hlutverksins.

Nýsköpunarfréttabréf
Ekki missa af mikilvægustu fréttunum um nýsköpun. Skráðu þig til að fá þau með tölvupósti.

Nú skulum við skrá RoleMiddleware miðlunarbúnaðinn fyrir ákveðna leið

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

Nú til að prófa millibúnaðinn með færibreytunni þurfum við að búa til beiðni og svar. Til að líkja eftir svarinu skulum við búa til stjórnandann sem við munum kalla TestController

php artisan make:controller TestController --plain

skipunin sem var keyrð mun búa til nýjan stjórnanda inni í möppunni app/Http/TestController.php, og breyttu aðferðinni index með línunni 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.";
   }
}

Eftir að hafa sett upp svarið byggjum við beiðnina með því að breyta skránni routes.phpmeð því að bæta við route role

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

á þessum tímapunkti getum við prófað dæmið með því að fara á slóðina http://localhost:8000/role

og í vafranum munum við sjá þetta tvennt echo

Role editor
Test Controller

Lokanleg miðbúnaður

Il terminable Middleware sinnir sumum verkefnum eftir að svarið er sent í vafrann. Þetta er hægt að ná með því að búa til millihugbúnað með aðferðinni enda í millibúnaði. Il terminable Middleware verður að vera skráður hjá middleware alþjóðlegt. Aðferðin terminate fái tvö rök $beiðni e $svar. 

Aðferðin Terminate verður að búa til eins og sýnt er í eftirfarandi kóða.

php artisan make:middleware TerminateMiddleware

Þegar millihugbúnaðurinn er búinn til app/Http/Middleware/TerminateMiddleware.php við skulum breyta kóðanum sem hér segir

<?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.";
   }
}

í þessu tilfelli höfum við aðferð handle og aðferð terminate með breytunum tveimur $request e $response.

Nú skulum við skrá millibúnaðinn

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

Nú þurfum við að búa til stjórnandann til að líkja eftir svarinu

php artisan make:controller XYZController --plain

að breyta innihaldi bekkjarins

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

Nú þurfum við að breyta skránni routes/web.php að bæta við þeim leiðum sem þarf til að virkja beiðnina

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

á þessum tímapunkti getum við prófað dæmið með því að fara á slóðina http://localhost:8000/terminate

og í vafranum munum við sjá eftirfarandi línur

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

Ercole Palmeri

Þú gætir líka haft gaman af:

Nýsköpunarfréttabréf
Ekki missa af mikilvægustu fréttunum um nýsköpun. Skráðu þig til að fá þau með tölvupósti.

Nýlegar greinar

Útgefendur og OpenAI skrifa undir samninga um að stjórna flæði upplýsinga sem unnið er með gervigreind

Síðasta mánudag tilkynnti Financial Times um samning við OpenAI. FT leyfir heimsklassa blaðamennsku…

30 Apríl 2024

Greiðslur á netinu: Hér er hvernig streymisþjónusta gerir þér kleift að borga að eilífu

Milljónir manna borga fyrir streymisþjónustu og greiða mánaðarlega áskriftargjöld. Það er almenn skoðun að þú…

29 Apríl 2024

Veeam býður upp á umfangsmesta stuðninginn fyrir lausnarhugbúnað, allt frá vernd til viðbragða og bata

Coveware frá Veeam mun halda áfram að veita viðbragðsþjónustu fyrir tölvukúgun. Coveware mun bjóða upp á réttar- og úrbótamöguleika ...

23 Apríl 2024

Græn og stafræn bylting: Hvernig forspárviðhald er að umbreyta olíu- og gasiðnaðinum

Forspárviðhald er að gjörbylta olíu- og gasgeiranum, með nýstárlegri og fyrirbyggjandi nálgun við verksmiðjustjórnun.…

22 Apríl 2024