我正在使用react native + Laravel API构建一个移动应用程序。无需注册/登录,移动应用即可公开访问。
我想要的是,如何只允许移动应用程序访问API。 API不应允许来自网络。
答案 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
});
只有提供有效的秘密令牌,您才能访问您组中的网址
秘密令牌是您生成的任何字符串。在移动应用程序和Laravel端使用相同的秘密令牌。
答案 1 :(得分:0)
API是与前端分离的组件。因此,它没有任何办法知道哪种平台正在尝试访问它,除非前端当然向API提供了一些信息(这是不可信的)。
所以我的意思是,您可以尝试传递自定义参数或标头字段,以指示来自移动设备的请求,而不将其包含在来自其他平台的请求中。但是,这只是多种方法之一。