Экспресс промежуточное ПО после методов сообщения - PullRequest
0 голосов
/ 24 июня 2018

У меня есть небольшая сборка API Angulars Framework Express. Для большей части моего маршрутизатора я использую промежуточное программное обеспечение аутентификации. Но для входа или регистрации промежуточное программное обеспечение не могло работать. С моей точки зрения, я могу сделать это по иерархии. Но это работает только для методов get:

//result: success:true (rcode: 200)
app.get('/test',function(req,res, next){
   res.json({success:true});
}
//result: success:false (rcode: 403)
app.post('/test',function(req,res, next){
   res.json({success:true});
}
app.use(function(req,res,next){
    var token = req.body.token || req.query.token || req.headers['x-access-token'];
    if(token) { ... } else {return res.status(403).send({success:false});}
}
//result: success:false (rcode: 403)
app.get('/test2',function(req,res, next){
   res.json({success:true});
}

Нужно ли посту больше времени и из-за асинхронной архитектуры nodejs сначала работает промежуточное программное обеспечение или почему я получаю для метода post также код ответа 403? И как я могу разделить маршруты с и без промежуточного программного обеспечения?

1 Ответ

0 голосов
/ 24 июня 2018

Это должно работать:

Создать функцию для вашей функции аутентификации - в данном случае authMiddleware.Используйте это промежуточное ПО по всем путям, для которого требуется эта аутентификация (как и в последнем примере)

const express = require('express')
const app = express()

let authMiddleware = function (req, res, next) {
  var token = req.body && req.body.token ? req.body.token : (req.query && req.query.token ? req.query.token : req.headers['x-access-token']);
  if (token) {
    // ... your additional code ...
    return next()
  } else {
    return res.status(403).send({ success: false });
  }
}

app.get('/test', function (req, res, next) {
  res.json({ success: true });
})

app.post('/test', function (req, res, next) {
  res.json({ success: true });
})

// protected route
app.get('/test2', authMiddleware, function (req, res, next) { 
  res.json({ success: true });
})

app.listen(3000)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...