【问题标题】:How can I change the JWT expire time in FeathersJS?如何更改 FeathersJS 中的 JWT 过期时间?
【发布时间】:2020-03-09 22:07:20
【问题描述】:

我正在查看 this question 如何在 FeathersJS 中设置 JWT 的子声明,但是当我打印 hook.params 时,那里没有 jwt。 只有authenticatedqueryrouteproviderheadersuserpayload

所以我仍然有一个问题:如何在 Feathers 中更改 JWT 令牌的过期时间?

【问题讨论】:

    标签: jwt hook feathersjs


    【解决方案1】:

    找到了 :) 我查看了帖子中链接的代码(链接已更改,但在浏览 git repo 时很容易找到它)并在params 中看到,您只需要创建自己的jwt 对象,这些选项将在创建 JWT 时合并。

    所以,如果其他人偶然发现了这个,这是我的代码:

    app.service('authentication').hooks({
      before: {
        create: [
          authentication.hooks.authenticate(config.strategies),
    
          context => {
            context.params.jwt = { expiresIn: 10 }; // 10 seconds
          }
        ],
        remove: [
          authentication.hooks.authenticate('jwt')
        ]
      }
    });
    

    【讨论】:

    • 请注意,到期时间不会自动强制执行...在 auth v2 中。 github.com/feathersjs/feathers/issues/1338 假一年的 JWT 将通过默认验证,即使您的配置有 10m JWT 过期。如果有人看到你发行长达一年的 JWT ......你就是在自找麻烦。使用所使用的算法验证过期...长时间过期应该使用像auth0.com/blog/…这样的好算法
    【解决方案2】:

    为了后代,

    您可以在 config/default.json 中轻松更改它:

    {
      // ...
      "authentication": {
        "jwtOptions": {
            "expiresIn": "2 days" // Or "10h" or just a number which is interpreted as seconds
        }
      }
    }
    

    【讨论】:

    • 谢谢,这是一种更简单但通用的方法。例如,当您想限制某个用户的会话时间时,可以使用我上面发布的代码。
    猜你喜欢
    • 1970-01-01
    • 2019-04-18
    • 2017-01-26
    • 2017-10-02
    • 2020-10-11
    • 2016-11-13
    • 2021-12-29
    • 1970-01-01
    • 2012-02-29
    相关资源
    最近更新 更多