sql >> Database teknologi >  >> NoSQL >> MongoDB

Lagring af adgangskoder med Node.js og MongoDB

Brug denne:https://github.com/ncb000gt/node.bcrypt.js/

bcrypt er en af ​​blot nogle få algoritmer, der fokuserer på denne brugssag. Du bør aldrig være i stand til at dekryptere dine adgangskoder, kun verificere, at en brugerindtastet klartekstadgangskode matcher den gemte/krypterede hash.

bcrypt er meget ligetil at bruge. Her er et uddrag fra mit Mongoose User-skema (i CoffeeScript). Sørg for at bruge async-funktionerne, da bycrypt er langsom (med vilje).

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 også denne artikel, som burde overbevise dig om, at bcrypt er et godt valg og hjælpe dig med at undgå at blive "godt og virkelig udfordret".



  1. En udviklervejledning til MongoDB Sharding

  2. Er Redis-opdateringer synkrone?

  3. Hurtig måde at finde dubletter på indekseret kolonne i mongodb

  4. MongoDB $toObjectId