如何更改护照中的用户密码?

时间:2016-12-28 09:20:27

标签: node.js passport.js reset-password

我的网站有这个功能:

password change functionality 但我不知道如何做到这一点? 这是我的一个用户的数据:

{
"_id" : ObjectId("58529494f2c495228479660f"),
"salt" : "42499bf0fdc9280bf8eaac90e2f5e482c24913ef53897bdba67f9482816f3e3d",
"hash" : "c316f0c3ab55a138c2a2e4880058c74810b9ed63c8fde8d6c992c80d0cd56ecab6bcc3c090fcab8fa4ebff61e68c457793e683bcbea9b7af7afa52e544e4b6cc4393b5b42c2e1c7e74dbd1a5c5fcd710563060dfff0dc4f30f2bb2f164bacccb6866add883466bb38d7c65992560c5f34936eda191749d4bc39af5c3c177aa2af0aa947bec642586210284285c7a959d6fcd7ae8ff2000792210f4ea8d1627df9a855a074d0620a3aaf7037264874a88207023b596d68f199939c2afe1aedf60f9bd73ecbf27fa0b6285e8157b89b4bc26e9838eed53b4082e330e01d5f11266b920d48f18492dc25404b920eab3f258eda0a21f40ea6b3496ce27358c1a67b58807169ac8ecd19d73069f72cdabab89e4755236911f9a641c3cc1858c1c3379c6041a6422fca985ffff932a14490c1cede3a04a6ef88e9d3bcf894fac5865db48fa253796041e682d7e132d70cefd53a610dfb761e30382444fdfce6cb7e7c79c61e14e6a36ebfbe2d20e4aed88ec6e885a45d951959e186464eb6c4ee9501e17d029be8afa4ed2d3b3142639872edef993a0c45dc717e36cd6022bcb25991df499afc90d35cf803a97a043f45e392bfd4c12f6b959a58d3d18017cea3f8d63bf3c6a5aded3d5aa1269054ee5c9a32bc2e10c251fc12afb5d60f22b8723d79f792398f7bf4fe791b29d6a24438399d28bc9197ea95cf7d6cc22e64fe1a954de",
"username" : "Isaac",
"__v" : 0,
"email" : "isaac@gmail.com",
"name" : "Isaac"}

要重置密码,我们需要:  1-希望用户输入他们当前的密码  2-如果确实如此,我们应删除当前密码并用

替换新的哈希密码

但我不知道该怎么做,我可以得到他们当前的密码,新密码和重复密码,但我不知道如何将他们的密码与当前密码进行比较。 如果有人能帮助我,我会非常高兴。

2 个答案:

答案 0 :(得分:0)

您必须比较旧密码和新密码的两个哈希值。首先使用给定的salt生成新密码的哈希值。然后与旧的比较。

答案 1 :(得分:0)

所以这个想法基本上是取用户的新密码,生成salt,用于加密密码,然后传递salt和新密码,生成哈希,这是你的新密码和新密码的组合。你生成的盐。

所以首先生成salt然后生成哈希。

下次当用户再次登录从数据库获取salt时,请使用用户使用salt指定的密码并生成哈希。比较两个哈希值(一个来自数据库,一个用户给出)。如果等于登录其他不正确的密码。 浏览加密文档以获得更好的理解。