将非用户字段添加到有效载荷以用于JWT令牌

问题描述:

嗨我正在寻找将非用户字段添加到身份验证过程中的有效内容,以便我可以包含在JWT令牌中。将非用户字段添加到有效载荷以用于JWT令牌

的要求是这样的:

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

配置是这样的:

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

我怎样才能传递用户名参数,所以我可以在将已授权的钩前/令牌检索服务,所以我可以去hook.data

或者如果有更好的方法来做到这一点,请让我知道。

检查this PR:

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

extraFields是你的用户对象的字段名。因此,JWT中的数据需要由用户端点提供。

  1. 创建后使用命令“羽毛产生钩”

  2. 内/src/service/authentication/index.js添加里面到底钩叫add_payload(或任何ü希望)服务身份验证的出口

app.service('/ auth/local')。after(hooks.after);

  1. 创建/ SRC /服务/认证/钩,内容index.js文件应该是这样的:
  2. '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. 钩子函数里面...... /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; };

    开始=“4>
开始=>

你可以按照以下方式添加它

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') 
     ] 
    } 
    });