Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将基于JWT令牌的链接作为一次性使用链接重置密码和电子邮件验证功能 1.我到现在为止都做了些什么_Javascript_Node.js_Express - Fatal编程技术网

Javascript 如何将基于JWT令牌的链接作为一次性使用链接重置密码和电子邮件验证功能 1.我到现在为止都做了些什么

Javascript 如何将基于JWT令牌的链接作为一次性使用链接重置密码和电子邮件验证功能 1.我到现在为止都做了些什么,javascript,node.js,express,Javascript,Node.js,Express,我在我的项目中添加了重置密码功能,用户可以在各自的电子邮件中获得链接。我使用用户的散列密码作为其密钥,使链接一次性使用。因此,如果用户更改密码一次,哈希值就会更改,而且密钥也会使令牌验证无效,从而使链接一次性使用。当我使用用户的散列密码作为其密钥时,我还必须将用户的\u id与链接中的令牌一起传递,以便在首先验证令牌时,我借助与链接中的令牌一起传递的用户的\u id获取用户的密码散列 2.我想做什么 现在是时候将电子邮件验证功能添加到我的项目中了,我不知道如何将验证链接作为一次性链接。如果用户多

我在我的项目中添加了重置密码功能,用户可以在各自的电子邮件中获得链接。我使用用户的散列密码作为其密钥,使链接一次性使用。因此,如果用户更改密码一次,哈希值就会更改,而且密钥也会使令牌验证无效,从而使链接一次性使用。当我使用用户的散列密码作为其密钥时,我还必须将用户的
\u id
与链接中的令牌一起传递,以便在首先验证令牌时,我借助与链接中的令牌一起传递的用户的
\u id
获取用户的密码散列

2.我想做什么 现在是时候将电子邮件验证功能添加到我的项目中了,我不知道如何将验证链接作为一次性链接。如果用户多次请求电子邮件验证,而我生成了那么多链接并将其发送到用户各自的电子邮件,该怎么办

3.我想过这样做 我想创建一个用于电子邮件验证的数据库,并在用户每次请求验证时将
用户Id
令牌
插入该数据库,一旦用户单击任何请求的链接,我就让用户验证并删除与用户的
用户Id
关联的所有令牌,以便用户再次单击任何链接或同一链接。电子邮件已验证,令牌已删除,因此我可以向用户响应“无效链接或请求”

如果3号是一个合法的机制,我将对1号实施同样的机制 如果上述机制是合法的,我想为我的密码重置功能实现同样的机制,这样我就不需要使用用户的密码哈希作为密钥,也不需要在链接中传递用户的
\u id


如果这两种功能可以以不同的方式实现,请给出建议。您的推理没有任何错误。@WiktorZychla那么我应该实现密码重置和电子邮件验证的第3种方法吗?对于密码重置,您可以继续使用第一种方法在JWT令牌中发送哈希密码。这样,您就不必将令牌存储在数据库中。如果您的数据库被泄露,那么您的所有令牌都将被盗,最终用户数据将被泄露。@ajaygandhi由于我使用哈希密码,我还必须将用户id与令牌一起发送。如果可以发送用户Id,那么我应该使用第3点进行电子邮件验证吗?您认为您的推理没有任何错误。@WiktorZychla那么我应该实现密码重置和电子邮件验证的第3种方法吗?我认为,对于密码重置,您可以继续使用第一种方法在JWT令牌中发送哈希密码。这样,您就不必将令牌存储在数据库中。如果您的数据库被泄露,那么您的所有令牌都将被盗,最终用户数据将被泄露。@ajaygandhi由于我使用哈希密码,我还必须将用户id与令牌一起发送。如果可以发送用户Id,那么我应该使用第3点进行电子邮件验证吗?你对此有什么看法