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

演明
Libérer: 2021-09-15 11:42:30
original
1400 Les gens l'ont consulté

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');
});
Copier après la connexion

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');
});
Copier après la connexion

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

Route::get('/',function(){
session(['key'=>123]);
return view('welcome');
});
Copier après la connexion

Et configurer une route pour sortir la session

Route::get('/test',function(){
echo session('key');
return 'test';
});
Copier après la connexion

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';
});
});
Copier après la connexion

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,
    ];
Copier après la connexion

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,
    ];
Copier après la connexion

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
Copier après la connexion

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);     
               
    }
}
Copier après la connexion

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;;
});
});
Copier après la connexion

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;);
});
Copier après la connexion

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;
   }
}
Copier après la connexion

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);     
               
    }
}
Copier après la connexion

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);     
               
    }
}
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal