2

JWT的sub声明是可选的,但 feathersjs-authentication 不会让我将其设置为空白字符串或将其删除。

authentication我之前能够为有效负载添加一个新值,hook但更改sub或尝试删除它不起作用。

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钩子添加相同的更改,但这也不起作用。拥有subas 的价值anonymous对我来说似乎不合适。他们的文档甚至说:

subject: 'anonymous', // Typically the entity id associated with the JWT

然而,似乎没有一种直接的方法可以让subJWT 声明一个动态值。

4

1 回答 1

2

subjectorsub身份验证选项中设置,并且 - 与任何其他 JWT 特定选项一样 - 不能通过有效负载设置。

查看代码,您可以看到可以设置有效的 JWT 选项密钥params(除了params.query恶意客户端之外,它不能被轻易篡改):

app.service('/api/auth').hooks({
  before: {
    create: [
      // You can chain multiple strategies
      auth.hooks.authenticate(['jwt', 'local']),

      hook => {
        hook.params.jwt.subject = hook.params.payload.userId;
      }
    ],
于 2017-08-31T22:33:21.483 回答