Представьте себе процесс восстановления пароля, который состоит из трех этапов:
- Отправка SMS. Пользователь входит в телефон. Отправьте смс с кодом подтверждения. Мы должны ограничить, сколько раз за период времени пользователь может сделать этот запрос.
- Введите код SMS. Пользователь вводит код подтверждения. Мы должны ограничить количество попыток.
- Установить новый пароль.
Также мы должны обеспечить правильный порядок этих шагов. То есть пользователь не может сразу перейти к шагу 3, не выполнив первые два шага.
Предположим, у нас простая архитектура:
Служба шлюза и входа в систему, которая реализует три метода API, каждый из которых соответствует каждому шагу восстановления пароля.
Вопрос: Какая служба должна реализовывать такого рода ограничения состояния? Шлюз или служба входа?
Должен ли это быть шлюз, который будет отслеживать количество неудачных попыток и другой контекст. Это оставляет службу входа без сохранения состояния.
Или, может быть, службу входа в систему, так что если архитектура развивается и будет другой шлюз, нет необходимости дублировать тот же код в другом шлюзе.