Обслуживание API-маршрутов и веб-маршрутов на разных портах - PullRequest
1 голос
/ 15 января 2020

У меня есть несколько API-маршрутов, связанных с моим REST API, и некоторые веб-маршруты, связанные с моей административной панелью. Мой сотрудник попросил меня обслуживать маршруты API через указанный порт c и панель администратора на другом порту, чтобы мы могли блокировать все запросы к панели администратора из любой точки, кроме локальной сети. Мой вопрос заключается в том, как я могу обслуживать маршруты из файла api. php через указанный порт c и обслуживать все маршруты из файла. php через другой порт.
Есть ли другой способ запретить всем пользователям inte rnet доступ в Интернет. php маршруты ???

Ответы [ 2 ]

1 голос
/ 15 января 2020

Другой подход, чем регистрация или нет маршрутов, предлагаемых @ rostik-hvostik, заключается в проверке через промежуточное ПО.

предлагает большую гибкость в отношении того, где мы можем его использовать.

Приложение / HTTP / Middleware / ListenPort. php


namespace App\Http\Middleware;

use Closure;

class ListenPort
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next, ...$ports)
    {
        // I'm not sure if $ports is an array of string or integer though
        if (in_array($request->getPort(), $ports, true)) {
            return $next($request);
        }

        abort(403);

    }
}

Приложение / Http / Kernel. php

protected $routeMiddleware = [
        'listen' => \App\Http\Middleware\ListenPort::class,
]

protected $middlewareGroups = [
        'web' => [
            ...,
            'listen:80',
        ],

        'api' => [
            ...,
            'listen:8000',
        ],
];
1 голос
/ 15 января 2020

Откройте RouteServiceProvider и добавьте некоторые условия

public function map()
{
    if (request()->getPort() === 8000) {
        $this->mapApiRoutes();
    }

    if (request()->getPort() === 80) {
        $this->mapWebRoutes();
    }
}

Но не забудьте добавить в конфигурацию вашего веб-сервера порт прослушивания

Nginx :

server {
    listen 80;
    listen 8000;
    server_name example.org;
    root /var/www/;
}

Apache:

Listen 80
Listen 8000
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...