ארטיקלען

לאַראַוועל מידוואַרע ווי עס אַרבעט

לאַראַוועל מידוואַרע איז אַ ינטערמידייט אַפּלאַקיישאַן שיכטע וואָס ינערווין צווישן די בקשה פון די באַניצער און די ענטפער פון די אַפּלאַקיישאַן.

דעם מיטל אַז ווען דער באַניצער (Laravel View) מאכט אַ בקשה צו די סערווער (Laravel קאָנטראָללער), די בעטן וועט גיין דורך די מידוואַרע. דעם וועג די מידוואַרע קענען קאָנטראָלירן אויב די בקשה איז אָטענטאַקייטאַד אָדער נישט: 

  • אויב דער באַניצער ס בקשה איז אָטענטאַקייטאַד, די בקשה איז געשיקט צו די באַקענד;
  • אויב דער באַניצער 'ס בקשה איז אַנאָטענטיקייטיד, די מידאַלוואַרע וועט רידערעקט דעם באַניצער צו די לאָגין פאַרשטעלן.

Laravel אַלאַוז איר צו defiענדיקן און נוצן נאָך מיטלוואַרע צו דורכפירן אַ פאַרשיידנקייַט פון טאַסקס אַחוץ אָטענטאַקיישאַן. 

לאַראַוועל מידאַלוואַרעס, אַזאַ ווי אָטענטאַקיישאַן און CSRF שוץ, זענען ליגן אין די וועגווייַזער אַפּ / הטטפּ / מיטלוואַרע .

מיר קענען דעריבער זאָגן אַז די מידוואַרע איז אַ הטטפּ בעטן פילטער, דורך וואָס עס איז מעגלעך צו באַשטעטיקן טנאָים און דורכפירן אַקשאַנז.

קריייטינג מיטלוואַרע

צו שאַפֿן אַ נייַע מיטל, מיר לויפן די פאלגענדע באַפֿעל:

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

מיר מאַכן די middleware און מיר רופן עס CheckAge, artisan וועט אונדז ענטפֿערן ווי גייט:

די פֿענצטער אויבן ווייזט אַז די מידוואַרע איז הצלחה באשאפן מיט דעם נאָמען " טשעק אַגע ".

צו זען אויב די CheckAge מידאַלוואַרע איז באשאפן אָדער נישט, גיין צו די פּרויעקט אין די אַפּ / הטטפּ / מידדלעוואַרע טעקע, און איר וועט זען די ניי באשאפן טעקע.

די ניי באשאפן טעקע האט די פאלגענדע קאָד

<?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 גלאבאלע מידוואַרע וועט זיין עקסאַקיוטאַד אויף יעדער הטטפּ בעטן פון די אַפּלאַקיישאַן, בשעת די רוט מיטלוואַרע וועט זיין אַסיינד צו אַ ספּעציפיש וועג. מיטלוואַרע קענען זיין רעגיסטרירט אין אַפּ/הטטפּ/קערנעל.פפּ. דער טעקע כּולל צוויי פּראָפּערטיעס $מיטלוואַרע e $ראָוטע מיטלוואַרע . די $מיטלוואַרע פאַרמאָג איז געניצט צו רעגיסטרירן גלאבאלע מידאַלוואַרע און אָונערשיפּ $ראָוטע מיטלוואַרע איז געניצט צו רעגיסטרירן מאַרשרוט-ספּעציפיש מידוואַרע.

צו פאַרשרייַבן גלאבאלע מידוואַרע, רשימה די קלאַס אין די סוף פון די $ מידדלעוואַרע פאַרמאָג.

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 צו שרייַבן די רעזולטאַט די נאָמען פון די ראָלע.

כידעש נוזלעטער
דו זאלסט נישט פאַרפירן די מערסט וויכטיק נייַעס וועגן כידעש. צייכן אַרויף צו באַקומען זיי דורך E- בריוו.

איצט לאָזן אונדז פאַרשרייַבן די 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

איר קען אויך ווי:

כידעש נוזלעטער
דו זאלסט נישט פאַרפירן די מערסט וויכטיק נייַעס וועגן כידעש. צייכן אַרויף צו באַקומען זיי דורך E- בריוו.

לעצטע ארטיקלען

Veeam פֿעיִקייטן די מערסט פולשטענדיק שטיצן פֿאַר ראַנסאָמוואַרע, פֿון שוץ צו ענטפער און אָפּזוך

Coveware דורך Veeam וועט פאָרזעצן צו צושטעלן ענטפער באַדינונגס פֿאַר סייבער יקסטאָרשאַן אינצידענט. קאָוועוואַרע וועט פאָרשלאָגן פאָרענסיקס און רימעדייישאַן קייפּאַבילאַטיז ...

קסנומקס אפריל קסנומקס

גרין און דיגיטאַל רעוואלוציע: ווי פּרידיקטיוו וישאַלט איז טראַנספאָרמינג די אָיל און גאַז אינדוסטריע

פּרידיקטיוו וישאַלט איז רעוואַלושאַנייזינג די ייל & גאַז סעקטאָר, מיט אַן ינאַווייטיוו און פּראָואַקטיוו צוגאַנג צו פאַבריק פאַרוואַלטונג.…

קסנומקס אפריל קסנומקס

וק אַנטיטראַסט רעגולאַטאָר רייזאַז ביגטעטש שרעק איבער GenAI

די UK CMA האט ארויס אַ ווארענונג וועגן ביג טעק ס נאַטור אין די קינסטלעך סייכל מאַרק. דאָרט…

קסנומקס אפריל קסנומקס

Casa Green: ענערגיע רעוואָלוציע פֿאַר אַ סאַסטיינאַבאַל צוקונפֿט אין איטאליע

די "קאַסע גרין" דעקרעט, פארמולירט דורך די אייראפעישע יוניאַן צו פאַרבעסערן די ענערגיע עפעקטיווקייַט פון בנינים, האט פארענדיקט זיין לעגיסלאַטיווע פּראָצעס מיט ...

קסנומקס אפריל קסנומקס

לייענען כידעש אין דיין שפּראַך

כידעש נוזלעטער
דו זאלסט נישט פאַרפירן די מערסט וויכטיק נייַעס וועגן כידעש. צייכן אַרויף צו באַקומען זיי דורך E- בריוו.

גיי אונדז