Как обойти некоторые IP-адреса для режима обслуживания Laravel 5

В Laravel 4 вы можете обойти некоторые IP-адреса для режима обслуживания Laravel (php artisan down), выполнив следующие действия:

App::down(function()
{
    if ( !in_array(Request::getClientIp(), ['192.168.0.1']))
    {
        return Response::view('maintenance', [], 503);
    }
});

Вы также можете предоставить файл конфигурации maintenance.php со списком всех IP-адресов, чтобы разрешить доступ к вашему приложению в режиме обслуживания:

<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Allowed IP Addresses
    |--------------------------------------------------------------------------
    | Include an array of IP addresses or ranges that are allowed access to the app when
    | it is in maintenance mode.
    |
    | Supported formats:

    |
    */

    'allowed_ips' => [
        '10.0.2.2',
        '10.2.*.*',
        '10.0.2.3 - 10.0.2.45',
        '10.0.3.0-10.3.3.3'
    ],

]; 

У меня вопрос: как мне этого добиться в Laravel 5?


person Emeka Mbah    schedule 02.04.2015    source источник


Ответы (1)


Создать новое промежуточное ПО

<?php

namespace App\Http\Middleware;

use Closure;

use Illuminate\Contracts\Foundation\Application;

use Illuminate\Http\Request;

use Symfony\Component\HttpKernel\Exception\HttpException;



class CheckForMaintenanceMode

{

    protected $request;

    protected $app;



    public function __construct(Application $app, Request $request)

    {

        $this->app = $app;

        $this->request = $request;

    }



    /**

     * Handle an incoming request.

     *

     * @param  \Illuminate\Http\Request  $request

     * @param  \Closure  $next

     * @return mixed

     */



    public function handle($request, Closure $next)

    {

        if ($this->app->isDownForMaintenance() &&

            !in_array($this->request->getClientIp(), ['::1','another_IP']))

        {

            throw new HttpException(503);

        }



        return $next($request);

    }

}

'::1' - это ваш собственный IP-адрес, если вы находитесь на локальном хосте, если не укажите свой IP-адрес. Вы можете исключить несколько IP-адресов в массиве. проверьте Исключение вашего IP-адреса в режиме обслуживания (php artisan down) в Laravel 5

person Ikong    schedule 25.08.2015