私は次のコードを持っています
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
ヘッダーが送信されません。
または、特定のヘッダーに沿って送信するようにスーパーエージェントを使用してフェザーを設定するにはどうすればよいですか?
ありがとう!
スーパーエージェントおよびその他のサポート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);
});
ミックスインはまだ公開されていませんが、すべてのプラグインがサービスにフックするために使用します。
この問題は、クローズされた後、最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、この問題へのリンクを含む新しい問題を開いてください。