MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Съхранение на пароли с Node.js и MongoDB

Използвайте това:https://github.com/ncb000gt/node.bcrypt.js/

bcrypt е един от малкото алгоритми, фокусирани върху този случай на употреба. Никога не трябва да можете да дешифрирате паролите си, само проверете дали въведената от потребителя парола с чист текст съвпада със съхранения/криптиран хеш.

bcrypt е много лесен за използване. Ето откъс от моята потребителска схема на Mongoose (в CoffeeScript). Не забравяйте да използвате асинхронните функции, тъй като bycrypt е бавен (нарочно).

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

Прочетете също и тази статия, която трябва да ви убеди, че bcrypt е добър избор и ще ви помогне да избегнете „добре и истински effed“.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как да актуализирам полетата на документа на MongoDB само ако не съществуват?

  2. Незадължителни параметри на заявката за търсене Mongoose?

  3. Как да използвате Node.js, за да направите SSH тунелна връзка към база данни MongoDB

  4. Как да използвате моделиране на данни MongoDB за подобряване на операциите с пропускателна способност

  5. ABCs на NestJS:Ръководство за начинаещи с MongoDB (Mongoose).