【问题标题】:How to change my user password in passport?如何更改护照中的用户密码?
【发布时间】:2017-05-12 13:16:21
【问题描述】:

我的网站有这个功能:

password change functionality 但我不知道如何使它工作? 这是我的一位用户的数据:

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

为了重置密码,我们需要: 1-希望用户输入他们当前的密码 2-如果是这样,我们应该删除当前密码并用它替换新的哈希密码

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

【问题讨论】:

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


    【解决方案1】:

    您必须比较旧密码和新密码的两个哈希值。首先,使用给定的 salt 为您的新密码创建一个哈希值。然后和你的旧的比较。

    【讨论】:

      【解决方案2】:

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

      所以先生成盐,再生成哈希。

      下次用户再次登录时,从数据库中获取盐,然后使用用户指定的密码和盐并生成哈希。比较两个哈希值(一个来自数据库,一个用户给出)。如果相等,则将他登录,否则密码不正确。 仔细阅读加密文档以获得更好的理解。

      【讨论】:

      • 我知道,但我不知道如何散列我的用户密码。
      • var mCrypto = require('crypto'); var encrypt_password = function(password, mobile) { // 使用密码库加密密码 var hash = mCrypto.createHmac('sha512', (mobile).toString());哈希.更新(密码); var passwordHash = hash.digest('hex');返回密码哈希; }
      • 使用手机号码和用户提供的密码的小例子
      猜你喜欢
      • 1970-01-01
      • 2019-12-05
      • 2018-08-27
      • 2021-03-25
      • 1970-01-01
      • 2017-11-03
      • 2021-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多