Feathers: Probleme beim Einrichten von Feathers/Client

Erstellt am 14. März 2016  ·  4Kommentare  ·  Quelle: feathersjs/feathers

Ich habe folgenden Code

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

Wenn ich jedoch create bei einem Dienst anrufe, wird der Authorization -Header nicht gesendet.

Wie kann ich alternativ Federn mit Superagent einrichten, um bestimmte Header mitzusenden?

Danke!

Alle 4 Kommentare

Für Superagent und jede andere unterstützende REST-Bibliothek können Sie auch params.headers festlegen, wenn Sie eine Serviceanfrage stellen:

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

Im Feathers-Authentifizierungs-Client verwenden wir das in einem Hook .

Das Problem mit Request hier ist wahrscheinlich, dass die Header jetzt von diesen Einstellungen überschrieben werden (selbst wenn sie leer sind).

Fantastisch! :smile: Das funktionierte perfekt.

Schluss damit:

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

Sieht großartig aus! Eine andere Sache, die Sie tun könnten, ist, es zu einem Dienst-Mixin zu machen, damit es automatisch zu allen Diensten hinzugefügt wird:

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

Mixins sind noch nicht öffentlich dokumentiert, aber es ist das, was alle Plugins verwenden, um sich in einen Dienst einzuklinken.

Dieses Problem wurde automatisch gesperrt, da es nach seiner Schließung keine Aktivitäten mehr gegeben hat. Bitte öffnen Sie ein neues Problem mit einem Link zu diesem Problem für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen