【问题标题】:Blacklisting JSON web token将 JSON Web 令牌列入黑名单
【发布时间】:2016-12-30 08:37:56
【问题描述】:

我正在使用jwt-simple 节点模块:。

如何将令牌列入黑名单?

【问题讨论】:

标签: node.js express jwt


【解决方案1】:

1) 只需从客户端移除令牌

2) 创建令牌黑名单

3) 只需缩短令牌到期时间并经常轮换它们

请看 Invalidating JSON Web Tokens

【讨论】:

    【解决方案2】:

    将 jwt 令牌列入黑名单或销毁的简单方法: 使用jwt-blacklist 模块

    通过$ npm install jwt-blacklist安装它

    示例:

    const jwt = require('jsonwebtoken');
    const jwtBlacklist = require('jwt-blacklist')(jwt);
    
    let token = jwtBlacklist.sign({
           feeling: 'awesome'
       }, 'secret', {expiresIn: '2h'});
    
    
    jwtBlacklist.blacklist(token); // destroy the token
    
    jwtBlacklist.verify(token); // throw error token expired or destroyed
    

    【讨论】:

      【解决方案3】:

      长话短说,你没有。

      您设置较短的过期时间并等待令牌过期。

      如果您需要快速注销,其代价是需要您的应用经常登录。

      Robert Rossman answer 解释另一种方法。

      【讨论】:

      • 感谢您的回答,但这并不能解释我的问题。我可以将访问令牌放入我想要黑名单但我不想访问数据库的数据库中。
      • 我再说一遍:JWT 不应该被列入黑名单。它们会在设定的时间后自行过期。想要快速注销?缩短过期时间,但用户将不得不经常要求新令牌。不希望用户每次都询问?设置较长的过期时间,忘记注销。
      • 想要将智威汤逊列入黑名单就像用铲子吃饭一样。当然,你可以以某种方式做到这一点。但是你可能会掉一两颗牙齿,把自己弄得一团糟,过得很艰难。要么用叉子吃饭,要么用铲子挖。如果您需要注销,请使用会话。需要智威汤逊?使用过期时间。
      • 当我使用 Laravel 时,有函数 revokeToken()。如果有人拿走了您的访问令牌,而您想立即删除该令牌,那会出现问题,该怎么办?
      • 那么您未能在令牌上设置足够短的到期时间。还有其他方案可以防止这种情况发生,但您会在 SO 中您的问题的多个副本中找到它们。
      猜你喜欢
      • 2020-01-22
      • 2021-01-06
      • 2019-02-23
      • 2020-01-20
      • 2016-08-31
      • 2021-04-08
      • 2020-04-30
      • 2021-04-16
      • 1970-01-01
      相关资源
      最近更新 更多