Laravel 5.5 API, как это предотвратить

Я разработал API с laravel 5.5. Все работает нормально.

Но представьте, что пользователь вводит URL-адрес «api» прямо в браузере (например, api/books), тогда он получит сообщение об ошибке:

Маршрут InvalidArgumentException [логин] не определен.

Как это предотвратить? Я попытался добавить несколько маршрутов в файл route/web.php, но безуспешно.

Любые предложения будут полезны.

Или, возможно, мне не следует ничего делать (пользователей, которые будут это делать, будет очень мало)?

Мерси


person Dom    schedule 06.05.2018    source источник
comment
URL-адреса API открыты. Итак, сначала нечего скрывать, любой может получить к этому прямой доступ. API, которым нужны аутентифицированные пользователи, должны содержать токен в заголовке или в параметре URL. Таким образом, вы можете проверить, что URL-адрес доступа содержит токен. Если это не так, вы можете выдать ошибку.   -  person Sovon    schedule 06.05.2018
comment
Привет Совон. Я бы предпочел искать решение, например, если маршрут не найден в файле route/web.php, а затем перенаправить на информационную страницу. Это то, что я пытаюсь сделать. Решение, о котором вы говорите, кажется мне более сложным. Нет ?   -  person Dom    schedule 06.05.2018
comment
Мне это не сложно. В любом случае, вы не можете проверить список маршрутов в одном файле, таком как web.php. Вы можете добавить префикс ко всем вашим маршрутам API и проверить, что ваш маршрут содержит этот префикс. Но опять же, таким образом вы также ограничиваете звонки с других устройств. Потому что прямой вход из браузера или вызов его с мобильного — это одно и то же.   -  person Sovon    schedule 06.05.2018


Ответы (1)


нашел ответ здесь:

Laravel 5.5 изменить URL-адрес перенаправления входа без проверки подлинности

Я делаю это только в файле «app/Exceptions/Handler.php», я изменил функцию «рендеринг» следующим образом:

public function render($request, Exception $exception)
{
    // return parent::render($request, $exception);

    // add dom
    return redirect('/');

    // or redirection with a json
    /*
    return response()->json(
        [
            'errors' => [
                'status' => 401,
                'message' => 'Unauthenticated',
            ]
        ], 401
    );
    */
}

И это работает нормально. Поскольку часть «laravel» будет использоваться только как серверная часть для API, этого будет достаточно.

Дом

person Dom    schedule 06.05.2018