小编Sud*_*esh的帖子

验证在php中生成的nodejs中的密码哈希

我的php代码生成一个哈希,password_hash用于存储在数据库中.以下是PHP代码:

$hash = password_hash($value, PASSWORD_BCRYPT, array('cost' => $cost));
Run Code Online (Sandbox Code Playgroud)

我想在nodejs中针对此哈希验证/检查密码.

我看到了很多节点模块(bcrypt,phpass,node-bcrypt),但是所有节点模块都给我错误.下面是在php中生成的示例哈希,我试图在nodejs中验证.

var hash = '$2y$08$9TTThrthZhTOcoHELRjuN.3mJd2iKYIeNlV/CYJUWWRnDfRRw6fD2';

var bcrypt = require('bcrypt');

bcrypt.compare("secret", hash, function(err, res) {
    console.log(res);
});
Run Code Online (Sandbox Code Playgroud)

(这里的秘密是真实的密码)

我目前的解决方法是通过节点调用php脚本来验证(对于需要解决方法的任何人)

var exec = require('child_process').exec;
var cmd = 'php verify.php password encryped_pasword';
exec(cmd, function (error, stdout, stderr) {
  // output is in stdout
  console.log(stdout);
 //If stdout has 1 it satisfies else false
});
Run Code Online (Sandbox Code Playgroud)

这是一个黑客,并不是这个问题的好答案.有没有办法验证nodejs中的密码而不使用这样的解决方法?

php security bcrypt node.js php-password-hash

21
推荐指数
2
解决办法
5569
查看次数

迁移在指定的列和索引列之后添加列

我希望在某个列之后通过迁移添加列也将其编入索引(正常的mysql索引不是唯一索引).这可以通过sequelize.js通过迁移实现.如果是,如何以及如果没有任何替代方案通过迁移.

我们可以在续集迁移中执行自定义查询吗?

以下是我现有的迁移文件.

'use strict';

module.exports = {
  up: function (queryInterface, Sequelize) {
    return queryInterface.addColumn('UserDetails', 'user_id', {
      type: Sequelize.INTEGER,
    });
  },

  down: function (queryInterface, Sequelize) {
    return queryInterface.removeColumn('UserDetails', 'user_id');
  }
};
Run Code Online (Sandbox Code Playgroud)

mysql node.js sequelize.js

7
推荐指数
2
解决办法
6146
查看次数