2017-11-30 11 views
0

ここで自分のコードをクリーンアップする方法を探しています。このようなルートがいくつかありますが、各ルートは個別にJSON Webトークン検証プロセスを実行します。Express:JSON Webトークンを使用して複数のルートを保護する方法

router.route('/some-route').post((req, res) => { 
    jwt.verify(req.body.token, secret, (err, decoded) => { 
    if (err) return console.log(err); 
    // do something 
    res.json({ some: 'response data' }); 
    }); 
}); 

router.route('/some-other-route').post((req, res) => { 
    jwt.verify(req.body.token, secret, (err, decoded) => { 
    if (err) return console.log(err); 
    // do something else 
    res.json({ some: 'response data' }); 
    }); 
}); 

他にもいくつかの方法がありますか?私のルートのいくつかはネストのコールバックレベルに近づいています。したがって、これをすべてのルートから削除するとよいでしょう。

答えて

2

ルータにuseミドルウェアとしての機能を確実に伝えることができますか。この関数は、すべてのルートに対して呼び出されます(router)。

router.use((req, res, next) => { 
    if(!req.body.token) 
    return res.json({ message: 'Missing token.' }); 

    jwt.verify(req.body.token, secret, (err, decoded) => { 
    if (err) return res.json({ message: 'Failed to authenticate token.' }); 
    // do something else 
    req.decoded = decoded 
    next(); 
    }); 
}); 
+0

"復号化された"パラメータを経路に渡すことはできますか? – Alan

+1

ああ、 'next()'の前に 'req.decoded = decoded'を行うことができます。私はそれを私の答えに加えました。 –

+0

キラー!これは完璧に動作します、ありがとう! – Alan

関連する問題