【问题标题】:How to authenticate user email by sending a verification code using NodeJS?如何通过使用 NodeJS 发送验证码来验证用户电子邮件?
【发布时间】:2021-08-20 08:11:30
【问题描述】:

我想在注册时向用户注册的电子邮件 ID 发送验证码。我找到的所有教程都使用 sendgrid API 发送验证链接。

有什么办法可以用验证码代替吗?

【问题讨论】:

标签: node.js mongodb jwt sendgrid


【解决方案1】:

你可以自己做。

  • 在数据库中的用户模式中,您需要一个布尔位置用于 isAuthenticated,而一个字符串位置用于身份验证代码。
  • 生成一些代码,如果你正在使用 nodejs UUID 包,NPM 是一个很棒的包。
  • 当用户注册时-默认保存false,生成代码并:
    1. 将其保存到数据库中的用户中
    2. 向用户发送一封邮件,其中包含指向您服务器上端点的链接,例如/:userid/:authcode
  • 在服务器上 - 构建此端点,通过您在参数上获得的 ID 从数据库中选择用户,检查您在参数上获得的代码是否与您刚刚选择的用户中保存的代码相同,并且如果是 - 将用户更新为 true
  • 最后一件事 - 登录时 - 检查身份验证是否为真,如果不是 - 发送特定错误,以便您可以在客户端上捕获它并显示详细的错误消息

【讨论】:

  • 您能建议一种方法,使身份验证代码仅在一段时间内有效吗?
  • setTimeout 为 X 时间量,然后只是使数据库中的代码未定义,所以如果用户在到期日期之后到达,它就不再是相同的代码了
  • 或者更好的事件 - 将时间戳属性添加到身份验证代码,然后对其进行检查。更好的是,如果您重新加载服务器,setTimeout 将停止,因此可能永远不会删除身份验证代码,因此用户将能够使用相同的身份验证代码永久登录。如果您破解代码的时间戳,它将永远不会发生
猜你喜欢
  • 2021-01-16
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多