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('/',function(){ session(['key'=>123]); return view('welcome'); }); Route::get('/test',function(){ echo session('key'); return 'test'; }); });
3. Vérification du super administrateur en arrière-plan
Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'web'], function () { Rount::get('login','IndexController@login');//登录不需要后台管理员的超级认证 }); Route::group(['prefix' => 'admin','namespace'=>'Admin','middleware'=>'admin.login'], function () { Rount::get('index','IndexController@index');//超级管理员需要认证后才能进入欢迎页面和编辑页面 Rount::resource('article','ArticleController'); });
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('welcome'); } function login(){ session(['admin'=>1]); //登录信息用admin存储 return '<h1>登录<h1>' } }
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('admin'); 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 à configurerMiddleware 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('admin')){ return redirect('admin/login'); //如果没有登录跳转到登录页面 }; 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!