在 Lumen 5.6 中强制使用 SSL 路由
Force SSL routes in Lumen 5.6
我需要在 Lumen 5.6 中强制使用 SSL 的所有路由。
例如 http://www.mywebsite.com to https://www.mywebsite.com
我在网上尝试了很多不同的解决方案,但没有一个对我有用:
中间件、.htaccess、AppServiceProvider
在 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
]);
我需要在 Lumen 5.6 中强制使用 SSL 的所有路由。 例如 http://www.mywebsite.com to https://www.mywebsite.com
我在网上尝试了很多不同的解决方案,但没有一个对我有用: 中间件、.htaccess、AppServiceProvider
在 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
]);