【问题标题】:How to allow laravel api only for mobile app?如何仅允许 laravel api 用于移动应用程序?
【发布时间】:2019-09-30 01:23:39
【问题描述】:

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

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

【问题讨论】:

  • 你可以参考这个,可能对你有帮助stackoverflow.com/questions/34404062/…
  • 你必须更具体。你的应用有用户吗?他们在应用程序中注册吗?请在问题中添加一些细节。
  • @gauri ,我以前看过。这适用于用户登录。
  • 可以考虑在Http请求中添加自定义Header。
  • @ryantxr ,我在我的问题中提到了这一点。移动应用无需注册即可供公众访问

标签: php laravel api react-native


【解决方案1】:

你可以使用这个可以通过 Composer 安装的 Laravel 组件。 此软件包提供了使用您放入 .env 文件中的单个 API 密钥的能力。

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 原始正文中

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

【讨论】:

  • 太棒了。我会调查的。
  • 如果有人知道秘密令牌和 api url 并从任何网站使用此秘密令牌发出 api 请求怎么办?那么任何人只要知道这个秘密令牌就可以使用和滥用该 API。
【解决方案2】:

API 是独立于前端的组件。所以它无法知道什么样的平台正在尝试访问它,除非前端向 API 提供一些信息(这是不可信的)。

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

【讨论】:

  • @sapnesh-saik 我会试试的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 2022-11-07
  • 2013-06-17
  • 2018-11-26
  • 2017-05-08
相关资源
最近更新 更多