Le middleware comprend : 1. Authentifier ; 2. CheckForMaintenanceMode ; 3. EncryptCookies ; 4. RedirectIfAuthenticated ; 6. TrustProxies ;
L'environnement d'exploitation de ce tutoriel : système Windows 7, version Laravel 6, ordinateur Dell G3.
Le middleware de Laravel
Laravel est livré avec certains middleware, notamment l'authentification, la protection CSRF, etc. Le middleware spécifiquement activé par Laravel peut être consulté via le fichier appHttpKernel.php. Pour les middleware commençant par AppHttpMiddleware (situé dans le répertoire app/Http/Middleware), nous pouvons personnaliser son comportement.
Authentifier le middleware
Fichier source : appHttpMiddlewareHttpMiddlewareAuthenticate.php
appHttpMiddlewareHttpMiddlewareAuthenticate.php
<?php namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; class Authenticate extends Middleware { /** * Get the path the user should be redirected to when they are not authenticated. * * @param \Illuminate\Http\Request $request * @return string */ protected function redirectTo($request) { if (! $request->expectsJson()) { return route('login'); } } }
作用:
用户身份验证。可修改 redirectTo 方法,返回未经身份验证的用户应该重定向到的路径。
CheckForMaintenanceMode 中间件
源文件 :appHttpMiddlewareCheckForMaintenanceMode.php
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode as Middleware; class CheckForMaintenanceMode extends Middleware { /** * The URIs that should be reachable while maintenance mode is enabled. * * @var array */ protected $except = [ // ]; }
作用:
检测项目是否处于 维护模式。可通过 $except 数组属性设置在维护模式下仍能访问的网址。
EncryptCookies 中间件
源文件:appHttpMiddlewareEncryptCookies.php
<?php namespace App\Http\Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; class EncryptCookies extends Middleware { /** * The names of the cookies that should not be encrypted. * * @var array */ protected $except = [ // ]; }
作用
对 Cookie 进行加解密处理与验证。可通过 $except 数组属性设置不做加密处理的 cookie。
RedirectIfAuthenticated 中间件
源文件:appHttpMiddlewareRedirectIfAuthenticated.php
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Support\Facades\Auth; class RedirectIfAuthenticated { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @param string|null $guard * @return mixed */ public function handle($request, Closure $next, $guard = null) { if (Auth::guard($guard)->check()) { return redirect('/home'); } return $next($request); } }
作用:
当请求页是 注册、登录、忘记密码 时,检测用户是否已经登录,如果已经登录,那么就重定向到首页,如果没有就打开相应界面。可以在 handle 方法中定制重定向到的路径。
TrimStrings 中间件
源文件:appHttpMiddlewareTrimStrings.php
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\TrimStrings as Middleware; class TrimStrings extends Middleware { /** * The names of the attributes that should not be trimmed. * * @var array */ protected $except = [ 'password', 'password_confirmation', ]; }
作用:
对请求参数内容进行 前后空白字符清理。可通过 $except 数组属性设置不做处理的参数。
TrustProxies 中间件
源文件:appHttpMiddlewareTrustProxies.php
<?php namespace App\Http\Middleware; use Illuminate\Http\Request; use Fideloper\Proxy\TrustProxies as Middleware; class TrustProxies extends Middleware { /** * The trusted proxies for this application. * * @var array|string */ protected $proxies; /** * The headers that should be used to detect proxies. * * @var int */ protected $headers = Request::HEADER_X_FORWARDED_ALL; }
作用:
配置可信代理。可通过 $proxies 属性设置可信代理列表,$headers 属性设置用来检测代理的 HTTP 头字段。
VerifyCsrfToken 中间件
源文件:appHttpMiddlewareVerifyCsrfToken.php
<?php namespace App\Http\Middleware; use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware; class VerifyCsrfToken extends Middleware { /** * Indicates whether the XSRF-TOKEN cookie should be set on the response. * * @var bool */ protected $addHttpCookie = true; /** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ // ]; }Fonction : Authentification de l'utilisateur. La méthode redirectTo peut être modifiée pour renvoyer le chemin vers lequel les utilisateurs non authentifiés doivent être redirigés.
Middleware CheckForMaintenanceModeFonction : 🎜🎜Détecte si le projet est en mode maintenance. Les URL toujours accessibles en mode maintenance peuvent être définies via la propriété de tableau $sauf. 🎜🎜🎜Middleware EncryptCookies🎜🎜🎜Fichier source :Fichier source :
rrreeeappHttpMiddlewareCheckForMaintenanceMode.php
appHttpMiddlewareEncryptCookies.php
🎜rrreee🎜Fonction🎜🎜Crypter, décrypter et vérifier les cookies. Les cookies qui ne sont pas cryptés peuvent être définis via l'attribut de tableau $sauf. 🎜🎜🎜Middleware RedirectIfAuthenticated🎜🎜🎜Fichier source : appHttpMiddlewareRedirectIfAuthenticated.php
🎜rrreee🎜Fonction : 🎜🎜Lorsque la page de demande est une inscription, une connexion ou un mot de passe oublié, détecte si l'utilisateur s'est connecté. Si l'utilisateur est déjà connecté, puis redirigez vers la page d'accueil, sinon ouvrez l'interface correspondante. Le chemin à rediriger peut être personnalisé dans la méthode handle. 🎜🎜🎜Middleware TrimStrings🎜🎜🎜Fichier source : appHttpMiddlewareTrimStrings.php
🎜rrreee🎜Fonction : 🎜🎜Nettoyer de haut en bas les caractères d'espacement sur le contenu des paramètres de la demande. Les paramètres qui ne sont pas traités peuvent être définis via la propriété de tableau $sauf. 🎜🎜🎜Middleware TrustProxies🎜🎜🎜Fichier source : appHttpMiddlewareTrustProxies.php
🎜rrreee🎜Fonction : 🎜🎜Configurer un proxy de confiance. La liste des proxys de confiance peut être définie via la propriété $proxies, et la propriété $headers définit les champs d'en-tête HTTP utilisés pour détecter les proxys. 🎜🎜🎜VerifyCsrfToken middleware🎜🎜🎜Fichier source : appHttpMiddlewareVerifyCsrfToken.php
🎜rrreee🎜Fonction : 🎜🎜Vérifiez si le jeton dans la requête correspond au jeton stocké dans la session. Les URL qui n'effectuent pas de vérification CSRF peuvent être définies via l'attribut de tableau $sauf. 🎜🎜🎜Recommandations associées : 🎜Les cinq derniers didacticiels vidéo Laravel🎜🎜🎜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!