Heim >Backend-Entwicklung >PHP-Tutorial >Wie erzwinge ich HTTPS in Laravel 5 mithilfe von Middleware?

Wie erzwinge ich HTTPS in Laravel 5 mithilfe von Middleware?

DDD
DDDOriginal
2024-12-12 13:39:10918Durchsuche

How to Force HTTPS in Laravel 5 Using Middleware?

Laravel 5 HTTPS-Umleitung mithilfe von Middleware

In Laravel 5 können Sie HTTPS für Ihre Anwendung mithilfe einer Middleware-Klasse erzwingen. So können Sie dies erreichen:

Middleware-Klasse:

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);
    }
}

Middleware anwenden:

Der nächste Schritt ist um diese Middleware auf alle eingehenden Anfragen anzuwenden. Fügen Sie es in der Datei Kernel.php zum Array $middleware hinzu:

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

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

Validierung der Produktionsumgebung:

Die bereitgestellte Middleware leitet alle HTTP-Anfragen an HTTPS weiter. Möglicherweise möchten Sie dieses Verhalten jedoch nur auf Produktionsumgebungen beschränken. Sie können dies tun, indem Sie die Anwendungsumgebung überprüfen:

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

Überlegungen zu Cloudflare:

Wenn Sie Cloudflare verwenden, kann es zu einer Umleitungsschleife kommen, da Cloudflare weiterleitet Anfragen über HTTP. Um dies zu beheben, fügen Sie die folgende Zeile zu Ihrer Middleware hinzu:

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

Web Group (Laravel v5.3):

Anstatt sie der $middleware hinzuzufügen Array, Sie können es zur Webgruppe in Kernel.php hinzufügen:

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

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

Denken Sie daran, dass die Webgruppe auf alle Routen von angewendet wird Standard.

Zusätzliche Hinweise:

  • URL::forceScheme('https'); leitet nicht um, sondern ändert nur das Schema in gerenderten Links.
  • Passen Sie die Umgebungsprüfung entsprechend dem Hosting-Setup Ihrer Anwendung an.
  • Stellen Sie sicher, dass vertrauenswürdige Proxys für Cloudflare korrekt eingestellt sind.

Das obige ist der detaillierte Inhalt vonWie erzwinge ich HTTPS in Laravel 5 mithilfe von Middleware?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn