首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel检测API调用源

Laravel检测API调用源
EN

Stack Overflow用户
提问于 2021-05-17 13:24:22
回答 1查看 130关注 0票数 1

我想检测API调用是否是在我的网站之外进行的。这是由于几个因素造成的,例如:

  1. 根据订阅计划应用节流限制,但只适用于
  2. 保存参数以外的调用,如果由外部
  3. 发出请求,则应用API端点限制(如果是外部的还是不基于

的)

示例:

代码语言:javascript
复制
www.mywebsite.com/api/v1/customers

outside

  • Throttle
  • Access: inside & inside: none
    • Throttle hour :每小时1000次请求(计划A),
    • 节流器外部:每小时2500次请求(计划B),
    • 将请求保存到数据库中,如果超出

示例2

代码语言:javascript
复制
www.mywebsite.com/api/v1/subscription/plan

inside

  • Throttle

  • Access: none

  • Throttle‘t:none

  • Throttle none: none

  • Throttle none:none

  • 不保存请求

我能用中间件&头检测来完成这个任务吗?或者我必须创建一些API令牌,告诉我这是外部请求还是内部请求?

例如,使用中间件,我无法获得sec-fetch-site标头参数,因为它总是为null。

代码语言:javascript
复制
namespace App\Http\Middleware;

use Closure;

class HasAccess
{
    public function handle($request, Closure $next)
    {
        // Always returns null
        if ($request->header('sec-fetch-site') != 'same-origin')
            return false;
    
        return $next($request);
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-20 12:45:33

解决了问题。

将不同的角色应用于API用户,现在我可以定制我的中间件了。

代码语言:javascript
复制
class HasAccess
{
    public function handle($request, Closure $next)
    {
        if (\Auth::user()->role == 'API')
            abort(404);
    
        return $next($request);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67570589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档