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

您好我正在寻找添加一个非用户字段的身份validation过程中的有效载荷,所以我可以包含在JWT令牌。

请求是这样的:

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

configuration是这样的:

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

我怎样才能传递userName参数,所以我可以在auth /令牌服务的前钩子检索它,所以我可以把它的hook.data

或者如果有更好的方法来做,只需让我知道。

检查这个PR:

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

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

你可以用下面的方法添加这个

 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') ] } }); 
  1. 创build一个名为add_payload(或任何你想要的)后钩服务validation使用命令“羽毛生成钩”

  2. 在/src/service/authentication/index.js里面添加里面的导出

。app.service( '/ AUTH /本地')后(hooks.after);

  1. 在/ src / service / authentication / hooks中创buildindex.js文件,内容应该如下所示:

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