2017-06-06 17 views
0

私はfeathersJsには新しく、フックとサービスを使って認証を実行する方法を学ぼうとしています。私はCouchdbデータベースとクレードルを使用しています。 これは、 "users"フックサービスを使用してhashPasswordでパスワードを暗号化するpostメソッドです。 postメソッドは以下の通りです:羽毛のパスワードを解読して確認する方法js

app.post('/dev',function(req,res,next){ 
    var username = req.body.username; 
    var password = req.body.password; 
    app.service('database').create({username,password}).then(user => { 
    db.save(user, function (err, docs) { 
     // Handle response 
     res.json(docs); 
     }); 
     console.log('User Created Successfully.', user); 
    }).catch(console.error); 
    }) 

とサービスされています。今、私はデータをretriveするためにこれを使用しています

app.service('authentication').hooks({ 
    before: { 
    create: [ 
     // You can chain multiple strategies 
     auth.hooks.authenticate(['jwt', 'local']) 
    ], 
    remove: [ 
     auth.hooks.authenticate('jwt') 
    ] 
    } 
}); 

app.service('database').hooks({ 
    before: { 
    find: [ 
     auth.hooks.authenticate('jwt') 
    ], 
    create: [ 
     local.hooks.hashPassword({ passwordField: 'password' }) 
    ] 
    } 
}); 

app.post('/devget',function(req,res,next){ 

     var User = { 
       username: req.body.username, 
       password: req.body.password 
      }; 
      app.service('dataget').find(User).then(user => { 
      db.view('byuser/user',{key: User.username}, function (err, docs) { 
        // Handle response 
        res.json(docs); 
       }); 
       console.log('User Get Successfully.', user); 
      }).catch(console.error); 
    }) 

が、これは私のように応答して、データを提供します:

Response [ 
    { id: '060ab48a4826da7125d8ae45350037ee', 
    key: 'w', 
    value: 
    { _id: '060ab48a4826da7125d8ae45350037ee', 
     _rev: '1-ea9a18d3724ce4542019dc5752c1fd4d', 
     username: 'w', 
     password: '$2a$10$yBJVJTmVXfTk0V4CCiWkd.GvAZZB9dF2pckKJ9wb/lJcAK8Ou.v06', 
     id: 0 } } ] 

これはうまく動作します単語は暗号化されていますが、パスワードを復号化してユーザーを認証する方法がわかりません。

注:フックやサービス、カスタムサービスやクラスではなく、パスポートを使用しないでください。

+0

user [feathers-authentication](https://github.com/feathersjs/feathers-authentication)でユーザーを認証できます。あなた自身のパスワードを作成する場合は、自分自身のパスワードハッシュを利用することをお勧めします。しかし、あなたが羽毛を使用する場合、あなたのパスワードをここでどのようにハッシュするかを確認してください(https://github.com/feathersjs/feathers-authentication-local/blob/master/src/utils/hash.js)。 – Jalil

答えて

0

パスワードを復号化しません。暗号化されたパスワードを、パスワードを暗号化する機能と比較します(ユーザーにパスワードの比較をさせた後に)。

var hash = bcrypt.hashSync("bacon"); 

bcrypt.compareSync("bacon", hash); // true 
bcrypt.compareSync("veggies", hash); // false 
関連する問題