如何通过使用 NodeJS 发送验证码来验证用户电子邮件?

Posted

技术标签:

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

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

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

【问题讨论】:

betterprogramming.pub/… 【参考方案1】:

你可以自己做。

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

【讨论】:

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

以上是关于如何通过使用 NodeJS 发送验证码来验证用户电子邮件?的主要内容,如果未能解决你的问题,请参考以下文章

每次使用 YouTube Data API v3 时如何绕过输入验证码来授权我的代码

验证 socket.io/nodejs 的用户

使用python 实现SSH登录设备时出现问题?

如何在 React/NodeJS 身份验证流程中使用 httpOnly cookie 获取用户数据

如果经过身份验证的 NodeJS 则重定向

如何在 NodeJS 中使用 JWT 令牌验证路由