Maison > cadre php > Laravel > Que sont les middlewares Laravel ?

Que sont les middlewares Laravel ?

青灯夜游
Libérer: 2023-01-13 00:40:23
original
3247 Les gens l'ont consulté

Le middleware comprend : 1. Authentifier ; 2. CheckForMaintenanceMode ; 3. EncryptCookies ; 4. RedirectIfAuthenticated ; 6. TrustProxies ;

Que sont les middlewares Laravel ?

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.phpappHttpMiddlewareHttpMiddlewareAuthenticate.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(&#39;login&#39;);
        }
    }
}
Copier après la connexion

作用:

用户身份验证。可修改 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 = [
        //
    ];
}
Copier après la connexion

作用:

检测项目是否处于 维护模式。可通过 $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 = [
        //
    ];
}
Copier après la connexion

作用

对 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(&#39;/home&#39;);
        }
        return $next($request);
    }
}
Copier après la connexion

作用:

当请求页是 注册、登录、忘记密码 时,检测用户是否已经登录,如果已经登录,那么就重定向到首页,如果没有就打开相应界面。可以在 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 = [
        &#39;password&#39;,
        &#39;password_confirmation&#39;,
    ];
}
Copier après la connexion

作用:

对请求参数内容进行 前后空白字符清理。可通过 $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;
}
Copier après la connexion

作用:

配置可信代理。可通过 $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 = [
        //
    ];
}
Copier après la connexion
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 CheckForMaintenanceMode

Fichier source : appHttpMiddlewareCheckForMaintenanceMode.php

rrreee
Fonction : 🎜🎜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 : 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!

É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