2017-03-13 8 views
0

.allエンドポイントがすべてaccountsに接続されていると呼び出されました。私がそれでしたいのは、トークンをチェックし、それが本当であれば、実際に要求されたエンドポイントに進むことです。Nodejs .allエンドポイントから要求された実際のエンドポイントをブロックする方法は?

私はnext()が、これを行うことになっていたが、他の要求に関係なく、トークンが有効であることやないのと呼ばれていると思いました。

私は間違っていますか?

router.all(['/accounts', '/accounts/*'], (req, res, next) => { 

    admin.auth().verifyIdToken(req.headers.authorization) 
    .then((token) => { 

    // TODO: Fix so that this actually works, now the other routes are being called regardless 
    next(); 
    }).catch((error) => { 

    res.send({ 
     error: error, 
     data: { 
     account: null, 
     message: 'Invalid token', 
     status: 401 
     } 
    }); 
    }); 
}); 

router.post('/accounts', (req.res, next) => {}); 
router.post('/accounts/:uid', (req.res, next) => {}); 

どのように私は/ .ALLエンドポイントのみ/アカウントまたは/アカウントのいずれかに続けていることを確認することができます。verifyToken機能が成功した場合はuid?どうやらnext()は連続するリクエストをブロックするという点で何もしません。

答えて

0

あなたがキャッチしていないreturnを行う場合は、それが連鎖壊れる返すならば、それは、次のルートに進みます。

router.all(['/accounts', '/accounts/*'], (req, res, next) => { 

    admin.auth().verifyIdToken(req.headers.authorization) 
    .then((token) => { 
    next(); 
    }).catch((error) => { 

    return res.send({ 
     error: error, 
     data: { 
     account: null, 
     message: 'Invalid token', 
     status: 401 
     } 
    }); 
    }); 
}); 
関連する問題