如何使用猫鼬方案验证密码的长度?

时间:2018-10-26 11:47:11

标签: node.js mongoose

在我的猫鼬模式中,我在密码字段中使用了以下代码..但它不检查密码的最小长度..这是怎么了?

 password:{
    type:String,
    required:true,
    match:/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/,
    minlength:5


  },

1 个答案:

答案 0 :(得分:1)

嘻哈跳!等一下。您不将密码直接存储在数据库中;由于安全问题。


如何存储密码:

  • 从用户那里获取密码
  • 使用算法将其哈希,例如sha512(很久以前是md5 ...)
  • 存储散列的密码

如何检查密码是否匹配:

  • 从用户那里获取密码
  • 使用算法对其进行哈希处理
  • 将存储的密码与计算出的哈希值进行比较

Here是一个博客,解释了如何在node.js中对密码进行哈希处理。


例如:

const crypto = require('crypto'),
    text = 'hello bob',
    key = 'mysecret key'

// create hahs
const hash = crypto.createHmac('sha512', key);

hash.update(text);

const value = hash.digest('hex');

// print result
console.log(value);

关于密码的检查,您可以将其放入处理哈希的函数中,例如:

function checkPassword(pass) {
  if (!/(?=.*\d)(?=.*[a-z])(?=.*[A-Z])/.test(pass)) {
     throw new Error('E0001');
  }

  // Password is acceptable
}