Maison >développement back-end >tutoriel php >Comment forcer HTTPS dans Laravel 5 à l'aide d'un middleware ?

Comment forcer HTTPS dans Laravel 5 à l'aide d'un middleware ?

DDD
DDDoriginal
2024-12-12 13:39:10918parcourir

How to Force HTTPS in Laravel 5 Using Middleware?

Redirection HTTPS Laravel 5 à l'aide d'un middleware

Dans Laravel 5, vous pouvez appliquer HTTPS pour votre application à l'aide d'une classe Middleware. Voici comment y parvenir :

Classe de middleware :

namespace MyApp\Http\Middleware;

use Closure;

class HttpsProtocol
{

    public function handle($request, Closure $next)
    {
        if (!$request->secure()) {
            return redirect()->secure($request->getRequestUri());
        }

        return $next($request);
    }
}

Application du middleware :

L'étape suivante est pour appliquer ce Middleware à toutes les requêtes entrantes. Dans le fichier Kernel.php, ajoutez-le au tableau $middleware :

protected $middleware = [
    // Existing middleware...

    // Custom middleware
    'MyApp\Http\Middleware\HttpsProtocol',
];

Validation de l'environnement de production :

Le middleware fourni redirige toutes les requêtes HTTP vers HTTPS, mais vous souhaiterez peut-être limiter ce comportement aux environnements de production uniquement. Vous pouvez le faire en vérifiant l'environnement de l'application :

if (!$request->secure() && App::environment() === 'production') {
    return redirect()->secure($request->getRequestUri());
}

Considérations sur Cloudflare :

Si vous utilisez Cloudflare, vous pouvez rencontrer une boucle de redirection car Cloudflare transfère requêtes utilisant HTTP. Pour résoudre ce problème, ajoutez la ligne suivante à votre Middleware :

$request->setTrustedProxies([$request->getClientIp()]);

Groupe Web (Laravel v5.3) :

Au lieu de l'ajouter au $middleware tableau, vous pouvez l'ajouter au groupe Web dans Kernel.php :

protected $middlewareGroups = [
    'web' => [
        // ...

        // Custom middleware
        'MyApp\Http\Middleware\HttpsProtocol',
    ],
];

N'oubliez pas que le groupe Web est appliqué à toutes les routes par par défaut.

Remarques supplémentaires :

  • URL::forceScheme('https'); ne redirige pas mais modifie uniquement le schéma dans les liens rendus.
  • Ajustez la vérification de l'environnement en fonction de la configuration d'hébergement de votre application.
  • Assurez-vous que les proxys de confiance sont correctement définis pour Cloudflare.

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