2017-08-31 4 views
1

Der Anspruch sub für JWTs ist optional, aber die feathersjs-Authentifizierung lässt mich nicht auf eine leere Zeichenfolge setzen oder entfernen.Wie kann ich den "sub" Anspruch eines JWT in FeathersJS setzen?

Ich konnte einen neuen Wert zu der Nutzlast in authentication vor hook hinzufügen, aber die Änderung sub oder versuchen, es zu entfernen, funktioniert nicht.

app.service('/api/auth').hooks({ 
    before: { 
    create: [ 
     // You can chain multiple strategies 
     auth.hooks.authenticate(['jwt', 'local']), 

     hook => { 
     // I can add a new `SUB` value but this method doesn't work for `sub` 
     Object.assign(hook.params.payload, {SUB: hook.params.payload.userId}) 
     } 
    ], 
... 

Ich habe versucht, die gleiche Änderung an der after Haken Zugabe, aber das entweder nicht funktioniert hat. Die sub Wert als anonymous scheint mir nicht richtig. Ihre Dokumente sogar sagen:

subject: 'anonymous', // Typically the entity id associated with the JWT

Doch es scheint nicht geradlinig Weg, um den sub JWT Anspruch um einen dynamischen Wert zu machen.

Antwort

1

Die subject oder sub ist in authentication options eingestellt und kann - wie jede andere JWT-spezifische Option - nicht über die Nutzlast eingestellt werden.

Looking at the code Sie können sehen, dass valid JWT option keys durch params eingestellt werden kann (die andere als params.query außerhalb eines böswilligen Client Reichweite ist, so dass es nicht leicht manipuliert werden kann):

kommenden
app.service('/api/auth').hooks({ 
    before: { 
    create: [ 
     // You can chain multiple strategies 
     auth.hooks.authenticate(['jwt', 'local']), 

     hook => { 
     hook.params.sub = hook.params.payload.userId; 
     } 
    ], 
+0

arbeiten nicht :(Noch out als 'anonymous'. Ich probierte in' before' und 'after' hook; dasselbe Ergebnis. – SomethingOn

Verwandte Themen