我想只允许通过一个密钥访问我的API。此API密钥将位于我的环境变量文件中。每次用户尝试访问我的API。我先检查是否有钥匙 是否存在于请求体内。之后,我将检查与我的固定密钥匹配的密钥。如果条件都满足,我将调用api,否则将响应401错误。
我尝试寻找中间件但没有找到任何解决方案。可以使用护照 但它要求基本/本地/摘要策略的用户名和密码,Oauth和OpenId基于第三方提供商。
我通过在控制器本身添加密钥检查功能解决了这个问题。像路由器一样直接路由到 我的API和进入API控制器后,我称之为密钥验证功能。但它似乎不是标准的方式。 相反,我想阻止用户在路线杠杆本身。
如果有人遇到这种情况,请分享适当的解决方案。
答案 0 :(得分:0)
如果你真的需要检查密钥,那么在路由中间件中应该非常容易,例如:
var checkApiKey = function(req, res, next) {
if (req.body.apiKey !== process.env.API_KEY) {
return res.status(401).json({status: 'error'});
}
next();
};
app.all('/api/*', checkApiKey);
app.get('/api/something', function(req, res) {
return res.json({status: 'ok', message: 'You knew the key! Congrats!'});
});