如何在Node.js中生成带有到期时间的登录代码?

时间:2019-07-07 05:08:07

标签: node.js mongodb express

我正在使用Node.js Express和MongoDB建立一个网站,该网站允许用户注册和登录,并且工作正常,没有问题。但是现在我想生成带有到期日期的多个登录代码(类似优惠券代码),因此用户只能使用一次。如果登录代码已过期,则用户将无法登录。有没有办法做到这一点?

expected login form

我当时正在寻找基于passportjs的身份验证策略,但我找不到任何策略。

谢谢

1 个答案:

答案 0 :(得分:1)

用于使用像create-react-app这样的模式的mongo进行设置

  1. { createdAt: timestamp, code: string }上创建唯一索引,这样就不会两次创建相同的代码。在客户端代码中,您最终将需要重试创建一些代码。 (您可以改为预先生成代码,然后将其放入队列中并拉出它们,但这听起来有些复杂)
  2. code上添加TTL索引以使其过期,以自动删除文档。如果您想“过期”文档但要跟踪该代码曾经存在,则需要手动检查时间戳。
  3. 使用代码时,您需要删除它(或将其标记为已使用)。
  4. 您可能希望通过ip包括某种速率限制,以使人们无法使用蛮力代码。

使用护照,您将需要指定“自定义”策略。使用自定义策略,您可以执行设置身份验证的所有操作。 Passport-js How to create a custom strategy有一些指导。