2017-05-12 11 views
0

私はフレームワークを試して理解するために最後の数ヶ月間ノードで開発していましたが、実際には複数のデバイス用のアプリケーションを作成しようとしています。passport.jsはいつ使用しますか?

すべての投稿と取得リクエストを処理するapiとしてノードプロジェクトを使用します。

別のノードプロジェクトでは、ajaxとsocket.ioのノードapiと通信する反応するWebインターフェイスが必要になります。

モバイルAndroid/iosまたはcordovaでは、私は上記のようにモバイルインターフェイスを使用しています。

私は私の質問の背景について説明したので、私は自分の問題を説明します。

今のところ、bcryptを使用して登録とログインのためのパスワードを暗号化するノードプロジェクトがあります。私はまた、パスポートを使ってセッションを確立し、フラッシュメッセージを作成します。

router.post('/login', 
    passport.authenticate('local', {successRedirect:'/', failureRedirect:'/users/login',failureFlash: true}), 
    function(req, res) { 
     res.redirect('/'); 
    }); 

passport.use(new LocalStrategy(
    function(username, password, done) { 
     db_functions.getUserByEmail(username,function(error, results) { 
      if (error) throw error; 

      bcrypt.compare(password, results[0].password, function(err, res) { 
       if(res === true){ 
        return done(null,results[0]) 
       } else { 
        return done(null, false, {message: 'Invalid password'}) 
       } 
      }); 
     }) 
    })); 

passport.serializeUser(function(user, done) { 
    done(null, user.id); 
}); 

passport.deserializeUser(function(id, done) { 
    console.log(id) 
    db_functions.getUserById(id,function(error, results) { 
     if (error) throw error; 
     done(error,results[0]) 
    }) 
}); 

は、私はAPIとして私のノードのプロジェクトを使用するつもりならば、私はセッションを無効にする必要があり、私はこのために使用することを、ここにhttp://passportjs.org/docs/overview読み:

app.get('/api/users/me', 
    passport.authenticate('basic', { session: false }), 
    function(req, res) { 
    res.json({ id: req.user.id, username: req.user.username }); 
    }); 

を今、私がセッションを持っていることなぜ、私はパスポートを使い続けなければならないのですか?私はbcryptを使って登録し、ユーザーがログインしたときにパスワードの一致を確認します。削除すると、Webブラウザやモバイルデバイスからの各要求もユーザーとハッシュパスワードを送信する必要がありますか?プロセスの異なるステップ -

答えて

0

passportは、セッションが離れて承認のある、認証ライブラリです。代わりにセッションを使用するのでは、などjsonwebtokenとしてトークンを発行するpassportを使用し、ejwtとして、これらのなを確認するために別のライブラリを使用するか、

passportでもある認証が必要なルートでこれらのトークンを検証するためのミドルウェアの機能を作成することができます拡張性があります - 多くのプラグインが既に開発されており、多くの認証形式で認証方法を発行できます。

あなたはそれを使用する必要はありません、それはちょっと簡単になります。それ以外の場合はbcrypt、おそらく使用する必要があります。

+1

これを明確にしていただきありがとうございます。私はjwtについて読んで、私は被験者を今より良く理解する。 –

関連する問題