Самое простое это создать таблицу для авторизационных кодов с временем жизни (ttl):
id | auth_code | ttl
1 | 345679 | 2023-01-18 20:03:00
У каждого пользователя должен быть уникальный код и в каждый момент времени должен быть только один код для пользователя (при выдаче нового, старые удаляй).
Когда пришел запрос на авторизацию проверяй, что
body.user_id === user_id && body.auth_code === auth_code && new Date() < new Date(ttl)
Надо не забывать, что использованные коды надо удалять.