如何仅允许Laravel API用于移动应用程序?

时间:2019-05-13 05:39:46

标签: php laravel api react-native

我正在使用react native + Laravel API构建一个移动应用程序。无需注册/登录,移动应用即可公开访问。

我想要的是,如何只允许移动应用程序访问API。 API不应允许来自网络。

2 个答案:

答案 0 :(得分:2)

您可以使用此Laravel组件,可以将其与Composer一起安装。 该软件包提供了使用单个API密钥的功能,该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
});

只有提供有效的秘密令牌,您才能访问您组中的网址

  • 在GET或POST请求中
  • 在请求标头中作为授权载体
  • 在json原始正文中

秘密令牌是您生成的任何字符串。在移动应用程序和Laravel端使用相同的秘密令牌。

答案 1 :(得分:0)

API是与前端分离的组件。因此,它没有任何办法知道哪种平台正在尝试访问它,除非前端当然向API提供了一些信息(这是不可信的)。

所以我的意思是,您可以尝试传递自定义参数或标头字段,以指示来自移动设备的请求,而不将其包含在来自其他平台的请求中。但是,这只是多种方法之一。