在 Lumen 5.6 中强制使用 SSL 路由

Force SSL routes in Lumen 5.6

我需要在 Lumen 5.6 中强制使用 SSL 的所有路由。 例如 http://www.mywebsite.com to https://www.mywebsite.com

我在网上尝试了很多不同的解决方案,但没有一个对我有用: 中间件.htaccessAppServiceProvider

在 Lumen 5.6 中强制使用 SSL 方案的最佳方式是什么?

您可以创建中间件 class 并使用 redirect()->to 函数并将 secure 参数设置为 true

为此,创建一个class(HttpsProtocol.php)并将其放在中间件目录中:

namespace App\Http\Middleware;

use Closure;

class HttpsProtocol{

    /**
     * @param \Illuminate\Http\Request $request
     * @param Closure $next
     *
     * @return \Illuminate\Http\Response|\Laravel\Lumen\Http\ResponseFactory|mixed
     */
    public function handle($request, Closure $next) {
        if (!$request->secure() && app()->environment() === 'production') {
            return redirect()->to($request->getRequestUri(), 302, [], true);
        }
        return $next($request);
    }

}

并将中间件添加到 app.php 中找到的 $app->middleware 数组。

$app->middleware([
    App\Http\Middleware\HttpsProtocol::class
]);