sql >> Databasteknik >  >> NoSQL >> MongoDB

Lagra lösenord med Node.js och MongoDB

Använd detta:https://github.com/ncb000gt/node.bcrypt.js/

bcrypt är en av bara några algoritmer som fokuserar på detta användningsfall. Du ska aldrig kunna dekryptera dina lösenord, bara verifiera att ett användarinmatat klartextlösenord matchar den lagrade/krypterade hashen.

bcrypt är mycket enkel att använda. Här är ett utdrag från mitt Mongoose User-schema (i CoffeeScript). Se till att använda asynkroniseringsfunktionerna eftersom bycrypt är långsam (med avsikt).

class User extends SharedUser
  defaults: _.extend {domainId: null}, SharedUser::defaults

  #Irrelevant bits trimmed...

  password: (cleartext, confirm, callback) ->
    errorInfo = new errors.InvalidData()
    if cleartext != confirm
      errorInfo.message = 'please type the same password twice'
      errorInfo.errors.confirmPassword = 'must match the password'
      return callback errorInfo
    message = min4 cleartext
    if message
      errorInfo.message = message
      errorInfo.errors.password = message
      return callback errorInfo
    self = this
    bcrypt.gen_salt 10, (error, salt)->
      if error
        errorInfo = new errors.InternalError error.message
        return callback errorInfo
      bcrypt.encrypt cleartext, salt, (error, hash)->
        if error
          errorInfo = new errors.InternalError error.message
          return callback errorInfo
        self.attributes.bcryptedPassword = hash
        return callback()

  verifyPassword: (cleartext, callback) ->
    bcrypt.compare cleartext, @attributes.bcryptedPassword, (error, result)->
      if error
        return callback(new errors.InternalError(error.message))
      callback null, result

Läs också den här artikeln, som bör övertyga dig om att bcrypt är ett bra val och hjälpa dig att undvika att bli "väl och verkligt utslagen".



  1. Mongoose-uppdateringen uppdateras inte:{ ok:0, n:0, nÄndrad:0 }

  2. MongoDB $dateFromParts

  3. Uppdatera array med flera villkor i mongodb

  4. Redis Pub Sub-kanalminne