如何解码和验证羽毛js中的密码

时间:2017-06-06 11:28:38

标签: node.js authentication jwt feathersjs

我是featherJs的新手,并尝试学习如何使用钩子和服务执行身份验证。我正在使用Couchdb数据库和摇篮。 这是使用“users”钩子服务在hashPassword中加密密码的post方法。 post方法如下:

app.post('/dev',function(req,res,next){
   var  username = req.body.username;
   var password = req.body.password;
   app.service('database').create({username,password}).then(user => {
     db.save(user, function (err, docs) {
      // Handle response
      res.json(docs);
         });
      console.log('User Created Successfully.', user);
    }).catch(console.error);
  })

和服务是:

app.service('authentication').hooks({
  before: {
    create: [
      // You can chain multiple strategies
      auth.hooks.authenticate(['jwt', 'local'])
    ],
    remove: [
      auth.hooks.authenticate('jwt')
    ]
  }
});

app.service('database').hooks({
  before: {
    find: [
      auth.hooks.authenticate('jwt')
    ],
    create: [
      local.hooks.hashPassword({ passwordField: 'password' })
    ]
  }
});

现在我用它来检索数据:

app.post('/devget',function(req,res,next){

        var User = {
              username: req.body.username,
              password: req.body.password
            };
            app.service('dataget').find(User).then(user => {
            db.view('byuser/user',{key: User.username}, function (err, docs) {
                  // Handle response
                  res.json(docs);
              });
              console.log('User Get Successfully.', user);
            }).catch(console.error);
    })

这会给我回复的数据:

Response [
  { id: '060ab48a4826da7125d8ae45350037ee',
    key: 'w',
    value: 
     { _id: '060ab48a4826da7125d8ae45350037ee',
       _rev: '1-ea9a18d3724ce4542019dc5752c1fd4d',
       username: 'w',
       password: '$2a$10$yBJVJTmVXfTk0V4CCiWkd.GvAZZB9dF2pckKJ9wb/lJcAK8Ou.v06',
       id: 0 } } ]

这工作正常,密码已加密,但我没有得到如何解密密码和验证用户。

注意:我只想要使用钩子和服务或自定义服务或课程但不使用护照。

1 个答案:

答案 0 :(得分:0)

您不解密密码;您将加密密码与将加密密码的功能进行比较(在您找到用户进行密码比较后)。

var hash = bcrypt.hashSync("bacon");

bcrypt.compareSync("bacon", hash); // true
bcrypt.compareSync("veggies", hash); // false