Maison >cadre php >Laravel >[Organisation des notes] Introduction et création du middleware HTTP laravel

[Organisation des notes] Introduction et création du middleware HTTP laravel

演明
演明original
2021-09-13 17:13:171404parcourir

Voici les notes que j'ai compilées en regardant des vidéos sur le site Web PHP chinois pour votre référence. Voici quelques connaissances de base. Si vous n'êtes pas familier avec les connaissances de base, vous pouvez y jeter un œil. Le dernier article que j'ai partagé concernait l'installation de Laravel par Composer. Si vous souhaitez voir plus d'articles, suivez-moi, j'espère pouvoir vous aider.

Le middleware ajoute en fait une couche de filtrage ou de protection à la route. Le préfixe et l'espace de noms sont transmis en tant que paramètres de tableau du groupe, et le middleware est également transmis en tant que paramètres de tableau du groupe

1. écrit

Avant d'ajouter le middleware

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

Après avoir ajouté le middleware Web

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

Le middleware Web peut utiliser la fonction de session pour activer la protection CSRF

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

Et configurer une route pour sortir la session

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

Mais parce que c'est pas là Dans un middleware, donc la valeur de la session ne peut pas être récupérée

Configurons le middleware qui met la route dans un groupe

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

Le middleware web par défaut du système, le middleware est dans Kernel.php

Utiliser le middleware web La session ne sera utilisée que lorsque

2. Définissez manuellement un middleware de connexion cloud de gestion en arrière-plan dans le fichier Kernel.php

Avant la définition :

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

Après la définition :

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

Basculez vers le répertoire du projet dans la fenêtre cmd Vous peut utiliser la commande pour créer un middleware

php artisan make:middleware AdminLogin

Puis visualiser le fichier AdminLogin.php dans le dossier Middleware

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

Puis appeler le middleware qui vient d'être créé

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

3. Vérification du super administrateur en arrière-plan

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

Tout utilisateur peut se connecter dans, mais si la connexion réussit, vous entrerez dans la page d'accueil. Si la connexion échoue, vous accéderez à la page de connexion. Étant donné que les informations de connexion sont stockées dans la session, nous utilisons les informations de session pour déterminer si vous devez le faire. Connectez-vous. La connexion simulée consiste à écrire les informations de connexion à la session. À l'intérieur, recherchez le contrôleur IndexController sous le package Admin

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

Sortons la session dans le middleware pour la tester

Vérifiez ensuite le fichier AdminLogin.php dans le middleware. dossier

<?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 session(&#39;admin&#39;);
        return $next($request);     
               
    }
}

Vérification :

Connectons-nous d'abord, puis visitons la page de bienvenue, si 1 est affiché, cela signifie que notre réglage est réussi (enregistrez 1 dans la session lors de la connexion, puis entrez dans la page d'accueil, la page d'accueil appellera AdminLogin.php du middleware,),

Nous continuons à configurer

Middleware Le fichier AdminLogin.php dans le dossier

<?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)
    {
        if(!session(&#39;admin&#39;)){
return redirect(&#39;admin/login&#39;); //如果没有登录跳转到登录页面
};
        return $next($request);     
               
    }
}

Les étapes ci-dessus sont mes notes d'étude que j'ai notées. ou les points clés à opérer. Si vous ne comprenez rien, vous pouvez laisser un message. Merci pour votre soutien. J'espère pouvoir vous aider. Si vous souhaitez voir plus d'informations, suivez-moi et continuez à partager dans le prochain article.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn