【问题标题】:Cannot prevent Laravel from throttling feature tests on circleci无法阻止 Laravel 限制 circleci 上的功能测试
【发布时间】:2018-06-08 08:09:38
【问题描述】:

使用 Laravel 5.6

我不想使用withoutMiddleware - 我正在尝试覆盖默认油门设置,但似乎没有任何效果。

'api' => [
    'throttle:60,1',
    'auth:api',
],

更改油门数似乎完全没有任何作用。

错误总是:

(
    [message] => Too Many Attempts.
    [exception] => Symfony\Component\HttpKernel\Exception\HttpException
    [file] => /root/laravel/vendor/laravel/framework/src/Illuminate/Routing/Middleware/ThrottleRequests.php
    [line] => 120
)

它在本地运行,但在 circleci 上,没有雪茄 - 尝试太多。

似乎只有 circlci 忽略了任何与节流相关的设置并做自己该死的事情。

我试图改变一切 - 但唯一阻止它发生的是withoutMiddleware,它还有其他我不想要的副作用。

【问题讨论】:

标签: php laravel laravel-5.6 circleci circleci-2.0


【解决方案1】:

最终通过来自 GitHub 的 this solution 的变体来解决此问题。

.env中创建了一个环境变量:

OAUTH_TOKEN_MAX_ATTEMPTS='60,1' 

然后将以下内容添加到App\Providers\RouteServiceProvider

/**
 * Define the routes for the application.
 *
 * @return void
 */
public function map()
{
    $this->mapApiRoutes();

    $this->mapWebRoutes();

    $oauthMaxAttemtps = env('OAUTH_TOKEN_MAX_ATTEMPTS', '60,1');

    Route::post('/oauth/token', [
        'uses' => '\Laravel\Passport\Http\Controllers\AccessTokenController@issueToken',
        'middleware' => "throttle:$oauthMaxAttemtps",
    ]);
}

在 .circlci/cofig.yml 中:

jobs:
  build:
    docker:
      - image: weengsteam/php7.1-mysql-5.7
    working_directory: ~/laravel
    environment:
        APP_NAME: API
        APP_ENV: testing
        APP_KEY: base64:pLeAsEdOnTcOmEaNdStEaLmYdAtA?=
        APP_DEBUG: true
        DB_CONNECTION: mysql
        DB_HOST: 127.0.0.1
        DB_PORT: 3306
        DB_DATABASE: testing
        DB_USERNAME: laravel
        DB_PASSWORD: not-a-secret
        OAUTH_TOKEN_MAX_ATTEMPTS: 600,1

【讨论】:

    猜你喜欢
    • 2016-12-24
    • 1970-01-01
    • 2021-06-08
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2020-01-08
    • 1970-01-01
    相关资源
    最近更新 更多