Heim  >  Artikel  >  PHP-Framework  >  [Organisation beachten] Einführung und Erstellung der Laravel-HTTP-Middleware

[Organisation beachten] Einführung und Erstellung der Laravel-HTTP-Middleware

演明
演明Original
2021-09-13 17:13:171359Durchsuche

Das Folgende sind die Notizen, die ich als Referenz zusammengestellt habe, als ich mir Videos auf der chinesischen PHP-Website angesehen habe. Im Folgenden finden Sie einige Grundkenntnisse. Wenn Sie mit den Grundkenntnissen nicht vertraut sind, können Sie einen Blick darauf werfen. Der letzte Artikel, den ich geteilt habe, befasste sich mit der Installation von Laravel durch Composer. Wenn Sie weitere Artikel sehen möchten, folgen Sie mir.

Middleware fügt der Route tatsächlich eine Filter- oder Schutzebene hinzu. Das Präfix und der Namespace werden als Array-Parameter der Gruppe übergeben, und die Middleware wird auch als Array-Parameter der Gruppe übergeben Schreiben

Vor dem Hinzufügen der Middleware

Route::group(['prefix' => 'admin','namespace'=>'Admin'], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

Nach dem Hinzufügen der Web-Middleware

Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>['web']], function () {
Rount::get('login','IndexController@login');
Rount::get('index','IndexController@index');
});

Die Web-Middleware kann die Sitzungsfunktion verwenden, um den CSRF-Schutz zu aktivieren

Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});

Und eine Route zur Ausgabe der Sitzung einrichten

Route::get('/test',function(){
echo session('key');
return 'test';
});

Aber weil es so ist nicht vorhanden In einer Middleware, daher kann der Wert der Sitzung nicht abgerufen werden.

Lassen Sie uns die Middleware einrichten, die die Route in eine Gruppe einordnet Die Sitzung wird nur verwendet, wenn

2. Definieren Sie manuell eine Cloud-Login-Middleware für die Hintergrundverwaltung in der Datei Kernel.php

Vor der Definition:

Route::group(['middleware'=>['web']], function () {
Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Route::get('/test',function(){
echo session('key');
return 'test';
});
});

Nach der Definition:

protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
    ];
Wechseln Sie in das Projektverzeichnis im cmd-Fenster Sie können den Befehl verwenden, um Middleware zu erstellen
protected $routeMiddleware = [
        'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
        'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
 'admin.login' => \App\Http\Middleware\AdminLogin::class,
    ];

Dann sehen Sie sich die Datei AdminLogin.php im Middleware-Ordner an

php artisan make:middleware AdminLogin

Rufen Sie dann die soeben erstellte Middleware auf

<?php
namespace App\Http\Middleware;
use Closure
class AdminLogin
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
       echo 12344445;
        return $next($request);     
               
    }
}

3. Überprüfung des Hintergrund-Superadministrators

Route::group(['middleware'=>['web','admin.login'],], function () {
Route::get(&#39;/&#39;,function(){
session([&#39;key&#39;=>123]);
return view(&#39;welcome&#39;);
});
Route::get(&#39;/test&#39;,function(){
echo session(&#39;key&#39;);
return &#39;test&#39;;
});
});

Jeder Benutzer kann sich anmelden Wenn die Anmeldung jedoch erfolgreich ist, gelangen Sie zur Begrüßungsseite. Wenn die Anmeldung nicht erfolgreich ist, gelangen Sie zur Anmeldeseite. Da die Anmeldeinformationen in der Sitzung gespeichert werden, ermitteln wir anhand der Sitzungsinformationen, ob dies der Fall ist Anmelden. Bei der simulierten Anmeldung werden die Anmeldeinformationen in die Sitzung geschrieben. Suchen Sie im Inneren den IndexController-Controller unter dem Admin-Paket.

Route::group([&#39;prefix&#39; => &#39;admin&#39;,&#39;namespace&#39;=>&#39;Admin&#39;,&#39;middleware&#39;=>&#39;web&#39;], function () {
Rount::get(&#39;login&#39;,&#39;IndexController@login&#39;);//登录不需要后台管理员的超级认证
});
Route::group([&#39;prefix&#39; => &#39;admin&#39;,&#39;namespace&#39;=>&#39;Admin&#39;,&#39;middleware&#39;=>&#39;admin.login&#39;], function () {
Rount::get(&#39;index&#39;,&#39;IndexController@index&#39;);//超级管理员需要认证后才能进入欢迎页面和编辑页面
Rount::resource(&#39;article&#39;,&#39;ArticleController&#39;);
});

Geben Sie die Sitzung in der Middleware aus, um sie zu testen. Überprüfen Sie dann die Datei AdminLogin.php in der Middleware Ordner

<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
class IndexController extends Controller
{
public function index(){
return view(&#39;welcome&#39;);
}
    function login(){
session([&#39;admin&#39;=>1]); //登录信息用admin存储
     return &#39;<h1>登录<h1>&#39;
   }
}
Überprüfung:

Melden wir uns zuerst an und besuchen Sie dann die Begrüßungsseite. Wenn 1 ausgegeben wird, bedeutet dies, dass unsere Einstellung erfolgreich ist (speichern Sie 1 in der Sitzung beim Anmelden und rufen Sie dann die Begrüßungsseite auf. Auf der Begrüßungsseite wird AdminLogin.php der Middleware aufgerufen oder wichtige zu bedienende Punkte. Wenn Sie etwas nicht verstehen, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung. Ich hoffe, ich kann Ihnen weiterhelfen. Wenn Sie weitere Informationen sehen möchten, folgen Sie mir und teilen Sie sie im nächsten Artikel weiter.

Das obige ist der detaillierte Inhalt von[Organisation beachten] Einführung und Erstellung der Laravel-HTTP-Middleware. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn