Как разрешить Laravel API только для мобильных приложений? - PullRequest
0 голосов
/ 13 мая 2019

Я создаю мобильное приложение, используя реакцию native + Laravel API. Доступ к мобильному приложению может быть открыт без регистрации или входа.

То, что я хочу, это как разрешить доступ API только для мобильных приложений. API не должен позволять из сети.

Ответы [ 2 ]

3 голосов
/ 13 мая 2019

Вы можете использовать этот компонент Laravel, который вы можете установить с помощью Composer.Этот пакет предоставляет возможность использовать один API-ключ, который вы положили в свой файл .env.

https://github.com/erjanmx/laravel-api-auth

Я полагаю, вы не хотите заниматься созданием этого файла.себя.

composer require erjanmx/laravel-api-auth

Публикация конфигурации пакета

php artisan vendor:publish --provider="Apiauth\Laravel\CAuthServiceProvider"

Добавьте это в .env

REMOTE_APP_TOKEN=<secret-token>

Добавьте промежуточное ПО apiauth: REMOTE_APP в ваши маршруты

// /routes/api.php

Route::group(['prefix' => 'v1', 'middleware' => ['apiauth:REMOTE_APP']], function () {
     // your routes
});

Ваши URL в вашей группе доступны только в том случае, если указан действительный секретный токен

  • В запросе GET или POST
  • В заголовке запроса в качестве носителя авторизации
  • В json raw body

Секретным токеном является любая генерируемая вами строка.Используйте один и тот же секретный токен в мобильном приложении и на стороне Laravel.

1 голос
/ 13 мая 2019

API - это компонент, отдельный от внешнего интерфейса. Таким образом, у него нет никакого способа узнать, какая платформа пытается получить к нему доступ, если, конечно, веб-интерфейс не предоставляет некоторую информацию API (которая не заслуживает доверия).

Итак, под этим я подразумеваю, что вы можете попытаться передать пользовательский параметр или поле заголовка, указывающее запрос с мобильного телефона, и не включать его в запросы с других платформ. Однако это только один из многих способов сделать это.

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