1

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,
    }
  });
};

そして、いくつかの mod で request を使用します。

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

すべてが「ユーザー」ファイルからうまく機能しますが、追加したばかりの他のコントローラーファイルがいくつかあり、何らかの理由でそれらのファイルのすべての関数でヘッダーがリセットされます (認証が失われます)。「ユーザー」ファイルを文字通りコピーして他のファイルに貼り付けても同じ問題が発生するか、他のファイルに必要なものを「ユーザー」ファイルに戻すと、再び正常に動作します。何が間違っていたのかわかりませんが、ファイルが1つしかない場合は非常に面倒になります...何かアイデアはありますか?

4

1 に答える 1

0

考え出した-それは、コントローラーファイル間で変数が想定どおりに渡されない問題だったので、トークンをセッションからヘッダーにコピーする新しい関数を作成し、すべて解決しました。

于 2015-01-19T00:04:11.020 に答える