将非用户字段添加到有效载荷以用于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中的数据需要由用户端点提供。
创建后使用命令“羽毛产生钩”
内/src/service/authentication/index.js添加里面到底钩叫add_payload(或任何ü希望)服务身份验证的出口
app.service('/ auth/local')。after(hooks.after);
- 创建/ SRC /服务/认证/钩,内容index.js文件应该是这样的:
-
钩子函数里面...... /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; };
'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: [] };
你可以按照以下方式添加它
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')
]
}
});