2017-03-25 17 views
4

Ich versuche zu verstehen, wie die Middleware in Laravel funktioniert. Hier ist meine Klasse kann jemand erklären, wie es funktioniert.Was ist Middleware in Laravel?

<?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) 
    { 
     if ($request->age <= 200) { 
      return redirect('home'); 
     } 

     return $next($request); 
    } 

} 

Dank

+1

Wenn es sich um eine Route Middleware handelt, müssen Sie diese Middleware bei jeder einzelnen Route (URL) durchlaufen, wenn Sie diese Middleware in Ihrer Route oder in Ihrem Controller-Konstruktor angeben. In Laravel, wenn Sie eine Anfrage an einen Link senden, der viele Daten enthält, und in diesen Daten muss ein Alter Feld sein und wenn das Alter weniger als 200 ist, dann geht Ihre Anfrage direkt zu Home Route, sonst auf Anfrage Seite gibt es Midlewares wie Auth wich, ob autorisieren oder nicht – webDev

+0

Danke für die Anleitung. –

Antwort

5

Middleware einen bequemen Mechanismus HTTP Anfragen zum Filtern bereitzustellen Anwendung eingeben. Beispiel: Laravel enthält eine middleware, die überprüft, ob der Benutzer Ihrer Anwendung authentifiziert ist. Wenn der Benutzer nicht authentifiziert ist, leitet der Benutzer den Benutzer zum Anmeldebildschirm um. Wenn der Benutzer jedoch authentifiziert wird, ermöglicht die middleware der Anfrage, weiter in der Anwendung fortzufahren.

Reference

Es kann für jede HTTP-Anforderung in der Anwendung Eingabe wie eine Firewall handeln.

In Ihrem Code:

$request->age ist eine Variable, die in Anforderung zur Verfügung gestellt und kann auf jeder HTTP-Anforderung überprüft werden, wenn ihr Wert <= 200 leitet dann Benutzer zu Hause Route.

+0

'Es funktioniert wie eine Firewall für jede HTTP-Anfrage in Ihrer Anwendung eingeben. - Es ist keine Firewall, es kann als Firewall fungieren, wenn Sie etwas überprüfen und umleiten zu einem anderen Ort oder zeigen Sie eine 4xx-Seite. Beweisen Sie, dass ich eine Anfrage an einen Drittanbieter-Dienst stellen kann, um die Anfrage zu protokollieren, und dann '$ next ($ request)' anruft - wie Sie verstehen, handelt es sich nicht um eine Firewall. Zusammengefasst: "Middleware ist die Funktion (oder Logik), die zwischen Router und Routen-Handler steht. ' – num8er

+1

Danke für die Korrektur –

+0

Du bist Willkommen (: – num8er

1

Middleware einen bequemen Mechanismus für HTTP-Anfragen Filterung Ihrer Anwendung eingeben. Zum Beispiel enthält Laravel eine Middleware, die überprüft, ob der Benutzer Ihrer Anwendung authentifiziert ist. Wenn der Benutzer nicht authentifiziert ist, leitet die Middleware den Benutzer zum Anmeldebildschirm um. Wenn der Benutzer jedoch authentifiziert ist, ermöglicht die Middleware, dass die Anforderung weiter in der Anwendung ausgeführt wird.

Natürlich kann zusätzliche Middleware geschrieben werden, um eine Vielzahl von Aufgaben neben der Authentifizierung durchzuführen. Eine CORS-Middleware ist möglicherweise dafür verantwortlich, allen Antworten, die Ihre Anwendung verlassen, die richtigen Header hinzuzufügen. Eine protokollierende Middleware protokolliert möglicherweise alle eingehenden Anforderungen in Ihrer Anwendung.

https://laravel.com/docs/5.4/middleware#introduction

Middleware ist eine Reihe von Wrapper um Ihre Anwendung, die Anfragen und die Antworten in einer Art und Weise schmücken, die nicht ein Teil Ihrer Anwendungslogik ist.

https://mattstauffer.co/blog/laravel-5.0-middleware-filter-style

1

Wie Sie sehen können, was die Middleware, so lässt sich nun

public function handle($request, Closure $next) 
{ 
    if ($request->age <= 200) { 
     return redirect('home'); 
    } 

    return $next($request); 
} 

Dieser Code überprüfen jede Anfrage und prüfen Sie die Altersvariable in der Anfrage den Code sehen. Wenn das Alter weniger als 200 beträgt, wird die Anfrage an das Haus weitergeleitet, andernfalls wird sie zur anfragenden Seite weitergeleitet. Angenommen, Sie fordern die Seite /about an, aber wenn Sie die Middleware-Bedingung nicht bestehen können, werden Sie andernfalls zu /home umgeleitet, andernfalls zu /about, d. H. Gegeben durch return $next($request);. Similely arbeitet mit auth und cors Middleware. Sie können auch eine Überprüfung wie $request->user->role=='admin' durchführen und auf die Admin-Seite oder auf eine andere Seite umleiten.

return $next($request); dies gibt Ihnen die nächste anfordernden Route (die ursprüngliche Route, die angefordert)

0

Middleware Hauptziel ist es, die unerwünschte Wirkung zu beschränken und hier können Sie die Benutzer angegebenen Eingabewerte überprüfen und Sie können, ist damit nur gültig .