将非用户字段添加到有效内容以用于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') ] } });
-
创build一个名为add_payload(或任何你想要的)后钩服务validation使用命令“羽毛生成钩”
-
在/src/service/authentication/index.js里面添加里面的导出
。app.service( '/ AUTH /本地')后(hooks.after);
- 在/ 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: [] };
-
里面的钩子函数… /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; };
- Node.js的身份validation解决scheme
- 我如何使用Passport.js返回到当前散列位置?
- 在unit testing中嘲笑Passport.js(本地策略)
- 成功login后,Azureauthentication返回到login页面 – node.js
- 使用Facebook和Passportjs进行身份validation:什么是accessToken,注册后应该存储什么?
- 有没有办法获得Firebase身份validation用户的UID?
- 节点 – Passport Auth – Authed Post路由在表单提交时挂起
- 是否有可能将HTTP头添加到Socket.io握手?
- Expressjs护照本地不能注销