有哪些方法需要对某些 API端点进行身份验证,而不是针对其他人进行身份验证?
理想情况下,"可写" DELETE /users/{user_id}
或PUT /items/{item_id}
等端点需要身份验证,而GET /items
之类的只读端点则不需要身份验证。
一种可能的解决方案是在每个请求处理程序中进行手动函数调用,但这不是非常干:
app.get('/users', function(req, res) {
res.status(200).send();
});
app.post('/users', function(req, res) {
if (!req.authenticated) return res.status(401).send();
work();
});
答案 0 :(得分:1)
您可以使用 req.method 在中间件 app.use 中执行此操作。这将具有http动词(GET,PUT,DELETE,POST)
app.use(function(req, res, next) {
if (req.method === 'POST' || req.method === 'PUT' || req.method === 'DELETE') {
if (!req.authenticated) return res.status(401).send();
next();
}
});
如果您使用的是epxress 4.0+,那么我们可以使用router.use中间件。
router.use(function(req, res, next) {
if (req.method === 'POST' || req.method === 'PUT' || req.method === 'DELETE') {
if (!req.authenticated) return res.status(401).send();
next();
}
});
您将使用router.get / post / put / delete而不是app.get / post / put / delete。