Как сгенерировать логин-код с истечением срока в Nodejs? - PullRequest
1 голос
/ 07 июля 2019

Я настраиваю веб-сайт, используя Node.js Express и MongoDB, которые позволяют пользователям регистрироваться и входить в систему, и это хорошо работает, и никаких проблем с этим нет. Но теперь я хочу создать несколько кодов входа (что-то вроде кода купона) с датой истечения срока действия, чтобы пользователь мог использовать его только один раз. и если срок действия пароля истек, пользователь больше не сможет войти. Есть способ сделать это?

expected login form

Я искал стратегию аутентификации на passportjs, но не могу найти ничего из этого.

Спасибо

1 Ответ

1 голос
/ 07 июля 2019

Для настройки с помощью mongo со схемой, подобной { createdAt: timestamp, code: string }

  1. Создайте уникальный индекс на code, чтобы вы не могли создать один и тот же код дважды.В клиентском коде вам в конечном итоге потребуется повторить попытку создания некоторых кодов.(Вместо этого можно предварительно сгенерировать коды, поместить их в очередь и вытащить их, но это звучит немного сложнее)
  2. Добавить индекс TTL в createdAt для истечения срока действия, чтобы автоматически удалять документы.Если вместо этого вы хотите «истечь» документы, но отследить, что код использовался, вам нужно вручную проверить временную метку.
  3. Когда код используется, вы хотите удалить его (илипометьте его как использованный).
  4. Скорее всего, вы захотите включить какое-то ограничение скорости по ip, чтобы люди не могли использовать грубые коды силы.

С паспортом вызахочу указать «кастомную» стратегию.Используя собственную стратегию, вы можете делать все, что захотите, для настройки аутентификации. Passport-js Как создать собственную стратегию имеет немного рекомендаций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...