csun-metalab / lumen-force-https
为 Lumen 开发的一个小型 Composer 包,通过中间件强制在 URL 中使用 HTTPS
1.0.1
2020-08-12 14:54 UTC
Requires
- php: >=5.5.9
README
一个为 Lumen 5.1 及以上版本开发的小型 Composer 包,通过中间件强制在 URL 中使用 HTTPS。
目录
安装
Composer、环境和服务提供者
Composer
要从 Composer 安装,请使用以下命令
composer require csun-metalab/lumen-force-https
环境
现在,将以下行添加到您的 .env
文件中
FORCE_HTTPS=true
这将启用强制功能。
服务提供者
接下来,在 bootstrap/app.php
中注册服务提供者和配置文件,如下所示
$app->configure('forcehttps');
$app->register(CSUNMetaLab\LumenForceHttps\Providers\ForceHttpsServiceProvider::class);
配置文件
如果您在项目根目录中没有 config
目录,请创建它。
为了利用此包中的自定义配置值,将以下代码复制并粘贴到 Lumen 中 config
目录下的名为 forcehttps.php
的文件中
<?php
return [
/*
|--------------------------------------------------------------------------
| Force HTTPS
|--------------------------------------------------------------------------
|
| Whether to force HTTPS on all URLs or not. Default is false.
|
*/
'force_https' => env('FORCE_HTTPS', false),
];
?>
中间件安装
最后,在 bootstrap/app.php
中添加对 $app->middleware()
的调用,或修改现有的一个以将其应用于应用程序接收的所有请求
$app->middleware([
CSUNMetaLab\LumenForceHttps\Http\Middleware\ForceHttps::class,
]);
必需的环境变量
您已在 .env
文件中添加了一个环境变量,以控制应用程序流量使用的协议。
FORCE_HTTPS
是否在所有 URL 上强制使用 HTTPS。默认为 false
,以防止在安装后直接强制使用 HTTPS 产生意外问题。
中间件
强制 HTTPS 中间件
此类命名空间为 CSUNMetaLab\LumenForceHttps\Http\Middleware\ForceHttps
。
中间件执行以下步骤
- 检查应用程序配置是否请求强制通过 HTTPS 传输流量
- 如果是,它执行以下步骤
- 将请求 URI 解析为绝对 URL,以便也可以看到协议
- 检查
HTTPS
服务器变量是否为非空值或设置为off
- 如果协议不是
https:
,则将其替换为https:
并返回重定向
- 如果不是,则将请求实例传递给管道中配置的下一个中间件