Отключить ограничитель скорости в Laravel?

Я реализовал как:

public interface Constants{
    Integer PAGE_SIZE = 20;
}

-

public class JspConstants extends HashMap<String, String> {

        public JspConstants() {
            Class c = Constants.class;
            Field[] fields = c.getDeclaredFields();
            for(Field field : fields) {
                int modifier = field.getModifiers();
                if(Modifier.isPublic(modifier) && Modifier.isStatic(modifier) && Modifier.isFinal(modifier)) {
                    try {
                        Object o = field.get(null);
                        put(field.getName(), o != null ? o.toString() : null);
                    } catch(IllegalAccessException ignored) {
                    }
                }
            }
        }

        @Override
        public String get(Object key) {
            String result = super.get(key);
            if(StringUtils.isEmpty(result)) {
                throw new IllegalArgumentException("Check key! The key is wrong, no such constant!");
            }
            return result;
        }
    }

Следующий шаг поместить экземпляр этого класса в servlerContext

public class ApplicationInitializer implements ServletContextListener {


    @Override
    public void contextInitialized(ServletContextEvent sce) {
        sce.getServletContext().setAttribute("Constants", new JspConstants());
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
    }
}

добавить слушателя в web.xml

<listener>
    <listener-class>com.example.ApplicationInitializer</listener-class>
</listener>
Доступ к

в jsp

${Constants.PAGE_SIZE}
29
задан SimpleJ 27 March 2017 в 23:40
поделиться

5 ответов

В app/Http/Kernel.php Laravel имеет ограничение по умолчанию для всех маршрутов API.

protected $middlewareGroups = [
    ...
    'api' => [
        'throttle:60,1',
    ],
];

Комментировать или увеличить его.

67
ответ дан EddyTheDove 27 March 2017 в 23:40
поделиться

Предполагая, что вы используете маршруты API, вы можете изменить дроссель в app / Http / Kernel.php или полностью его снять. Если вам нужно ограничить другие маршруты, вы можете зарегистрировать промежуточное программное обеспечение для них отдельно.

(пример ниже: газ - 60 попыток, затем блокировка на 1 минуту)

'api' => [
        'throttle:60,1',
        'bindings',
    ],
13
ответ дан cyclops1101 27 March 2017 в 23:40
поделиться

Если вы хотите отключить только автоматические тесты, вы можете использовать черту WithoutMiddleware в своих тестах.

use Illuminate\Foundation\Testing\WithoutMiddleware;

class YourTest extends TestCase {
    use WithoutMiddleware;

    ...

В противном случае просто удалите строку 'throttle:60,1', из файла ядра (app/Http/Kernel.php), и ваша проблема будет решена.

6
ответ дан Elias Soares 27 March 2017 в 23:40
поделиться

В Laravel 5.7

Ограничение динамической скорости Вы можете указать максимум динамического запроса на основе атрибута аутентифицированной модели пользователя. Например, если ваша модель пользователя содержит атрибут rate_limit, вы можете передать имя атрибута промежуточному программному обеспечению дросселя, чтобы оно использовалось для расчета максимального количества запросов:

Route::middleware('auth:api', 'throttle:rate_limit,1')->group(function () {
    Route::get('/user', function () {
        //
    });
});

https: //laravel.com/docs/5.7/routing#rate-limiting

4
ответ дан 120DEV 27 March 2017 в 23:40
поделиться

На самом деле вы можете отключить только определенное промежуточное ПО в тестах.

use Illuminate\Routing\Middleware\ThrottleRequests;

class YourTest extends TestCase 
{

    protected function setUp()
    {
        parent::setUp();
        $this->withoutMiddleware(
            ThrottleRequests::class
        );
    }
    ...
}
3
ответ дан Mostafa Bahri 27 March 2017 в 23:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: