gpt4 book ai didi

php -/oauth/token Passport 端点的 Laravel 速率限制 throttle

转载 作者:行者123 更新时间:2023-12-02 19:53:12 27 4
gpt4 key购买 nike

我正在尝试在 Laravel 5.8 中禁用 Passport 内置 oauth/token 端点的速率限制,我认为只需从 api 中删除节流中间件即可做到这一点:

'api' => [
// 'throttle:60,1',
'bindings',
],

但是,尽管这有效地禁用了我在 api 路由文件中定义的每个端点的速率限制,但它不会对 /oauth/token 执行此操作,就好像 Passport 有默认的限制设置一样。因此,我只是在 AppServiceProvider 中为该路由添加了一个荒谬的数字:

\Route::group(['middleware' => ['custom_provider', 'throttle:999999999,1']], function () {
Passport::routes();
});

但是当我测试这个时,由于某种原因,在几次请求后我仍然收到 429 错误:

429 Too Many Requests

X-RateLimit-Limit →9999999999
X-RateLimit-Remaining →9999999935
x-ratelimit-reset →1567108098

所以我宁愿完全禁用它。有什么想法如何专门针对 Passport 路由禁用它吗?

最佳答案

这是因为 Passport 不使用 api 中间件,而是直接在该路由上使用 throttle 中间件。
您可以在 source code 中看到这一点:

// This is how passport register that route
$this->router->post('/token', [
'uses' => 'AccessTokenController@issueToken',
'as' => 'passport.token',
'middleware' => 'throttle',
]);

您可以在护照注册其路线之前自行定义覆盖该路线。为此,我认为最方便的方法是连接到 Passport::routes() 方法:

Passport::routes(function ($router) {
$router->forAuthorization();

Route::post('/token', [
'uses' => 'AccessTokenController@issueToken',
'as' => 'passport.token',
]);
// This function would trigger the internal /token route registration
$router->forAccessTokens();

$router->forTransientTokens();
$router->forClients();
$router->forPersonalAccessTokens();
});

请注意,如果您需要所有护照路线,您也可以这样做:

Passport::routes(function ($router) {
Route::post('/token', [
'uses' => 'AccessTokenController@issueToken',
'as' => 'passport.token',
]);
$router->all();
});

您可以通过在项目根目录的控制台窗口中执行 php artisan route:list 来检查路由是否已正确注册

关于php -/oauth/token Passport 端点的 Laravel 速率限制 throttle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57716960/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com