Feathers: フェザー/クライアントのセットアップの問題

作成日 2016年03月14日  ·  4コメント  ·  ソース: feathersjs/feathers

私は次のコードを持っています

import feathers from 'feathers/client';
import rest from 'feathers-rest/client';
import request from 'browser-request';
import config from './config';

import User from 'app/utilities/user';

const client = request.defaults({
  headers: {
    Authorization: `Bearer ${User.get().token}`
  }
});

export default feathers().configure(
  rest(config.host).request(client)
);

ただし、サービスでcreateを呼び出すと、 Authorizationヘッダーが送信されません。

または、特定のヘッダーに沿って送信するようにスーパーエージェントを使用してフェザーを設定するにはどうすればよいですか?

ありがとう!

全てのコメント4件

スーパーエージェントおよびその他のサポートRESTライブラリの場合、サービスリクエストを行うときにparams.headersを設定することもできます。

app.service('todos').find({ headers: {
    Authorization: `Bearer ${User.get().token}`
  }
});

フェザー認証クライアントでは、フックでそれを使用しています。

ここでのRequestの問題は、おそらくヘッダーがこれらの設定によって上書きされることです(空の場合でも)。

素晴らしい! :smile:これは完璧に機能しました。

これで行くことになった:

import feathers from 'feathers/client';
import rest from 'feathers-rest/client';
import hooks from 'feathers-hooks';
import superagent from 'superagent';

import User from 'app/utilities/user';
import config from './config';

const app = feathers()
  .configure(hooks())
  .configure(
    rest(config.host).superagent(superagent)
  );

function authHook(hook) {
  hook.params.headers = Object.assign({}, {
    Authorization: `Bearer ${User.get().token}`
  }, hook.params.headers);
}

export default {
  service(url) {
    let s = app.service(url);
    s.before({
      all: authHook
    });
    return s;
  }
};

素晴らしく見える! もう1つできることは、サービスミックスインにして、すべてのサービスに自動的に追加されるようにすることです。

app.mixins.push(function(service) {
  service.before(authHook);
});

ミックスインはまだ公開されていませんが、すべてのプラグインがサービスにフックするために使用します。

この問題は、クローズされた後、最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、この問題へのリンクを含む新しい問題を開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価

関連する問題

ekryski picture ekryski  ·  30コメント

luandro picture luandro  ·  20コメント

norman784 picture norman784  ·  27コメント

IngwiePhoenix picture IngwiePhoenix  ·  20コメント

mike-morr picture mike-morr  ·  31コメント