1

我正在使用带有请求的 express 与 API 进行通信;一些控制器文件使用导出,所以我可以保持路由文件漂亮。

module.exports = function(app){

  var moment = require('moment'),
      request = require('request'),
      auth = require('../auth/auth.js')(app),
      apiUrl = process.env.API_URL;

  return {

    addProduct: function addProduct(req,res) ...

request.defaults 在 auth 文件中设置,login 调用那里的函数来设置标头以在整个应用程序中对用户进行身份验证。

auth.setToken = function(token, type, access) {
  auth.request = request.defaults({
    headers: {
      'x-access-token': token,
      'x-access-type': type,
      'x-access-level': access,
    }
  });
};

然后将 request 与一些 mod 一起使用。

auth.request.get(apiPath, function(err, apiRes) {
  res.render(renderView, {
    items: items,
  });
});

从“用户”文件中一切正常,但是我刚刚添加了几个其他控制器文件,并且由于某种原因,这些文件中的每个函数中的标头都被重置(因此我的身份验证丢失)。我可以从字面上将“用户”文件复制并粘贴到其他文件中并遇到同样的问题,或者我可以将其他文件中我想要的内容放回“用户”文件中,并且它再次正常工作。我不知道我做错了什么,但如果我只有一个文件,那将会非常混乱......有什么想法吗?

4

1 回答 1

0

想通了——这是一个变量没有像我想象的那样在控制器文件之间传递的问题,所以我创建了一个新函数来将令牌从会话复制回标头中,一切都得到了解决。

于 2015-01-19T00:04:11.020 回答