Счётчик с истечением срока
Часть раздела Аутентификация и безопасность путешествия по Node.js на Coddy. Урок 22 из 24.
Фиксированное окно отсчитывает попытки от одного момента начала. Храни since рядом со счётчиком. Для окна длительностью одна минута оно истекает, когда now - since достигает 60000 миллисекунд.
// Десятисекундный интервал в этом примере
if (now - since >= 10000) {
count = 0;
since = now;
}
count += 1;В пределах окна сохраняй исходное время его начала. Если обновлять его после каждой попытки, ожидание будет постоянно продлеваться. В этом упражнении используется now, чтобы ты мог проверить границу, не дожидаясь её наступления. Работающий сервер получает текущее время с помощью Date.now(). В проекте входа используется та же запись { count, since }.
Задание
ЛегкоОбнови запись о сбоях за одну минуту в exercise.js. Если now - since больше или равно 60000, начни новое окно с now и счётчиком 1. В противном случае увеличь счётчик и оставь since без изменений. Верни оба поля.
Для POST {"count":3,"since":0,"now":10000} ожидается {"count":4,"since":0}. При now:60000 ожидается {"count":1,"since":60000}.
Для первоначального GET /result используется предоставленный пример {"count": 2, "since": 1000, "now": 61000}. Используй POST /result с телом в формате JSON, чтобы проверить другие входные данные.
Попробуйте сами
export function exercise({ count, since, now }) {
return { count: count + 1, since };
}
Все уроки раздела Аутентификация и безопасность
1Пароли
Байты и шестнадцатеричный текстПолучение ключа пароляНовая сольНикогда не храните паролиСравнение байтов ключаПроверка пароляПравила регистрации4Владельцы и безопасность
Только ваши заметкиРоли администратораПотренируйтесь самостоятельно: Песочница Express