1

Hallo Ich bin auf der Suche nach einem Nicht-Benutzer-Feld zu den Nutzdaten im Auth-Prozess hinzufügen, so dass ich in der JWT-Token enthalten.Hinzufügen von Nicht-Benutzer-Feld zu Nutzlast für die Verwendung in JWT-Token

Der Antrag ist wie folgt:

{ "scriptId": "script1", "password": "password", "userName": "user1" } 

Config ist wie folgt:

"auth": { 
    "local": { 
     "usernameField" : "scriptId" 
    }, 
    "token": { 
     "secret": "mysecret", 
     "payload": ["scriptId","userName"], 
     "expiresIn": "10min" 
    }, 
    "successRedirect": "/chat.html" 
    } 

Wie kann ich den Benutzernamen Parameter übergeben, damit ich es in dem vor Haken des Auth/Token abrufen Service, so kann ich es auf die hook.data

Oder wenn es einen besseren Weg, es zu tun, lass es mich wissen.

Antwort

1

prüfen this PR:

// default.json 
{ 
    "auth": { 
    "extraFields": [ 
     "email", 
     "roles" 
    ] 
    } 
} 

Die extraFields Feldnamen Ihres Benutzerobjekt sind. Daher müssen Daten, die in den JWT gehen, von Ihrem Benutzerendpunkt bereitgestellt werden.

0
  1. schaffen ein Haken nach genannt add_payload (oder was auch immer wollen u) für den Dienst Authentifizieren mit dem Befehl ‚Federn Haken erzeugen‘

  2. innen /src/service/authentication/index.js innerhalb des Endes fügen des Exports

Anwendungsservice ('/ auth/local'). nach (hooks.after);

  1. index.js Datei in/src/service/Authentifizierung/Haken erstellen, sollten die Inhalte wie folgt aussehen:

'use strict' const addPayload = require('./add_payload'); const globalHooks = require('../../../hooks'); const hooks = require('feathers-hooks'); exports.after = { all: [addPayload()], find: [], get: [], create: [], update: [], patch: [], remove: [] };

  1. innerhalb der Hookfunktion ... /src/service/authentication/hooks/add_payload.js

    return function(hook) { hook.result.aa = "xyz"; // add whatever you want to the return here... hook.addPayload = true; };

1

können Sie auf diese Weise in den folgenden hinzufügen

app.service('authentication').hooks({ 
    before: { 
     create: [ 
     authentication.hooks.authenticate(config.strategies), 
     function (hook) { 
     hook.params.payload = { 
      userId: hook.params.user.userId, 
      accountId: hook.params.user.accountId 
      }; 
      return Promise.resolve(hook); 
     } 
     ], 
     remove: [ 
     authentication.hooks.authenticate('jwt') 
     ] 
    } 
    }); 
Verwandte Themen