2016年10月4日 星期二

Laravel 5 维护模式以及白名单

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

from : http://9iphp.com/web/laravel/maintenance-mode-and-whitelists-in-laravel-5.html

沒有留言:

wibiya widget