我有一个由Angulars Framework Express构建的小型API。 对于我的大多数路由器,我使用身份验证中间件。但是,用于登录或注册的中间件无法工作。根据我的知识,我可以按等级进行。但这仅适用于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? 以及在没有中间件的情况下如何分隔路由?
答案 0 :(得分:0)
这应该有效:
为您的身份验证功能创建一个功能-在这种情况下为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)