如何在FeathersJS中设置JWT的“子”声明?
问题描述:
对于JWT的sub
声明是可选的,但feathersjs-authentication不会让我将其设置为空白字符串或将其删除。如何在FeathersJS中设置JWT的“子”声明?
我能够hook
但改变sub
或试图删除它不工作之前,添加一个新值在authentication
有效载荷。
app.service('/api/auth').hooks({
before: {
create: [
// You can chain multiple strategies
auth.hooks.authenticate(['jwt', 'local']),
hook => {
// I can add a new `SUB` value but this method doesn't work for `sub`
Object.assign(hook.params.payload, {SUB: hook.params.payload.userId})
}
],
...
我尝试添加到after
钩一样的变化,但也不能工作。将sub
的值设为anonymous
对我来说似乎并不合适。他们的文件甚至说:
subject: 'anonymous', // Typically the entity id associated with the JWT
然而,似乎没有成为一个直接的方式,使sub
JWT要求的动态值。
答
subject
或sub
在authentication options中设置,并且与任何其他JWT特定选项一样,无法通过有效负载进行设置。
Looking at the code你可以看到,valid JWT option keys可以通过params
设置(这不同于params.query
是一个恶意的客户端范围之外,因此它不能被轻易篡改):
app.service('/api/auth').hooks({
before: {
create: [
// You can chain multiple strategies
auth.hooks.authenticate(['jwt', 'local']),
hook => {
hook.params.sub = hook.params.payload.userId;
}
],
不工作:(仍然来了out'as'anonymous',我在'before'和'after' hook中试过,结果相同。 – SomethingOn