具有静态密钥身份验证的Node Rest API

时间:2015-01-14 09:39:37

标签: api rest express passport.js

我想只允许通过一个密钥访问我的API。此API密钥将位于我的环境变量文件中。每次用户尝试访问我的API。我先检查是否有钥匙 是否存在于请求体内。之后,我将检查与我的固定密钥匹配的密钥。如果条件都满足,我将调用api,否则将响应401错误。

我尝试寻找中间件但没有找到任何解决方案。可以使用护照 但它要求基本/本地/摘要策略的用户名和密码,Oauth和OpenId基于第三方提供商。

我通过在控制器本身添加密钥检查功能解决了这个问题。像路由器一样直接路由到 我的API和进入API控制器后,我称之为密钥验证功能。但它似乎不是标准的方式。 相反,我想阻止用户在路线杠杆本身。

如果有人遇到这种情况,请分享适当的解决方案。

1 个答案:

答案 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!'});
});
相关问题