[英]NodeJS / ExpressJS check valid token parameter before routing
我有以下應用代碼:
(app.js)
var express = require('express')
, app = express()
, port = process.env.PORT || 8082
app.use(require('./controllers'))
app.use(function(req, res, next) {
res.send('Test')
next()
})
app.listen(port, function() {
console.log('Listening on port ' + port)
})
和兩個控制器:
(index.js)
var express = require('express')
, router = express.Router()
router.use('/projects', require('./projects'))
module.exports = router
(projects.js)
var express = require('express')
, router = express.Router()
router.get('/:id', function(req, res, next) {
res.json({project: req.params.id})
})
module.exports = router
這有效,但是現在我必須檢查URL以獲取有效令牌。 我的網址看起來像http:// server / api / projects?token = abc或http:// server / api / projects /:id?token = abc如果令牌無效,則不應加載任何項目(或其他控制器) /顯示。 處理此問題的最佳方法是什么(在app.js或controllers / index.js中)?
使用中間件。
app.use(function (req, res, next) {
if (checkToken(req.query.token) {
return next();
}
res.status(403).end("invalid token");
});
app.use(require('./controllers'))
您可以在route
函數中執行此驗證,也可以使用中間件來驗證param
,然后執行一些邏輯。
var express = require('express')
, router = express.Router()
function validate(req,res,next) {
if(req.params.id) // some logic
else other stuff
next();
}
router.get('/:id', validate, function(req, res, next) {
res.json({project: req.params.id})
})
module.exports = router
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.