你可能会希望在维护模式下你自己依然能够访问你的网站,其实这可以通过编写一个检查维护模式的中间件来实现该功能。
默认情况下,Laravel使用的是 \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class 中间件,这个我们可以在 /laravel/app/Http/Kernel.php 中看到。其中会触法 handle() 方法,该方法代码如下:
- public function handle($request, Closure $next)
- {
- if ($this->app->isDownForMaintenance()) {
- throw new HttpException(503);
- }
- return $next($request);
- }
我们可以通过自定义一个中间件来替换该中间件。
运行命令
php artisan make:middleware CheckForMaintenanceMode
,该命令会生成文件 app/Http/Middleware/CheckForMaintenance.php 。
打开该文件并修改其中的 handle() 方法使其满足你的要求,如:
- public function handle($request, Closure $next)
- {
- if ($this->app->isDownForMaintenance() &&
- !in_array($request->ip(), ['123.123.123.123', '124.124.124.124']))
- {
- return response('Be right back!', 503);
- }
- return $next($request);
- }
其中的IP数组即为白名单,不管是否处于维护模式,数组中的IP都可以访问网站。
剩下的就是把我们自定义的维护模式中间件替换Laravel自带的中间件了,打开 app/Http/Kernel.php ,并把其中的
- Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class
替换为:
- App\Http\Middleware\CheckForMaintenanceMode::class
完成上面的步骤即可实现维护模式下的白名单功能了,希望能够帮到你。
英文原文:toniperic.com
from : http://9iphp.com/web/laravel/maintenance-mode-and-whitelists-in-laravel-5.html
沒有留言:
張貼留言