簡體   English   中英

NodeJS / ExpressJS在路由之前檢查有效的令牌參數

[英]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 = abchttp:// 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM