sql >> データベース >  >> NoSQL >> MongoDB

Node.jsとMongoDBを使用したパスワードの保存

    これを使用してください:https://github.com/ncb000gt/node.bcrypt.js/

    bcryptは、このユースケースに焦点を当てた数少ないアルゴリズムの1つです。パスワードを復号化することはできません。ユーザーが入力したクリアテキストのパスワードが、保存/暗号化されたハッシュと一致することを確認するだけです。

    bcryptの使い方はとても簡単です。これが私のMongooseUserスキーマ(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が良い選択であり、「元気で本当に効果的」になるのを避けるのに役立つはずです。



    1. redisを使用して、socket.ioおよびNodeJとのリアルタイムチャットを構築します

    2. Redis/NoSQLでの概念化についてサポートが必要

    3. MongoDB $ isoDayOfWeek

    4. MongoDBデータベースのコレクションを一覧表示する4つの方法