如何在 express.js/passport-http-bearer 中撤销 express-jwt 令牌

Posted

技术标签:

【中文标题】如何在 express.js/passport-http-bearer 中撤销 express-jwt 令牌【英文标题】:How to revoke express-jwt tokens in express.js / passport-http-bearer 【发布时间】:2015-09-27 16:03:26 【问题描述】:

这是我的路由器:

expressJwt    = require('express-jwt')
router.post '/signin'      , controller.signUp
router.get  '/signout/:id' , expressJwt(secret:secretToken,  isRevoked: isRevokedCallback), controller.signOut

这是我的登出端点:

exports.signOut = (req, res) ->
  console.log res.user

我需要在端点中放入什么来撤销令牌。

我尝试将此功能放入我的路由器:

isRevokedCallback = (req, payload, done) ->
  for key, value of payload
    console.log(key + ' ' + value)
  # The below part does not work. Also I don't know what data should refer to
  issuer = payload.iss
  tokenId = payload.jti
  data.getRevokedToken issuer, tokenId, (err, token) ->
    if err
      return done(err)
    done null, ! !token
  return

列表推导确实退出了:

iat 1436437563
exp 1436653563

我的端点中还有一个用户对象已注销:

user [object Object]

现在如何将各个部分组合在一起并撤销 JWT 令牌,以使持有该令牌的用户无法再使用该令牌登录(或者立即将其过期)?

这是我的用户对象的一些示例控制台日志:

 user: 
    __v: 0,
     _id: '559e6aad50cdf686db31ea55',
     local: 
       password: '$2a$08$YBvzOWADlw9tZCDh3aG/j.gV.Tbaesk3pLbbiHL/lkGaC08bSbGmy',
        email: 'dieter@mustermann.de'  ,
  iat: 1436445357,
  exp: 1436661357 
GET /user/signout/559e6aad50cdf686db31ea55 401 2.530 ms - 12
ERROR:Error: expected 200 "OK", got 401 "Unauthorized"
    1) should sign out via passport.js

【问题讨论】:

您好,请问您是如何在 expressjs 中使用咖啡脚本的? 【参考方案1】:

我通过返回一个 token: false 键值对来管理它。另一个想法是用expirationInSeconds: 1 发回一个令牌。旧令牌仍然有效,这根本不能称为非常安全。因此,将默认令牌到期时间设置得非常低,或者改用其他选项,例如黑名单。

【讨论】:

以上是关于如何在 express.js/passport-http-bearer 中撤销 express-jwt 令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何在表单提交后保留文本(如何在提交后不删除自身?)

如何在异步任务中调用意图?或者如何在 onPostExecute 中开始新的活动?

在 Avkit 中如何使用这三行代码,以及如何将音乐静音”

如何在 JDBC 中启动事务?

如何在 Fragment 中调用 OnActivityResult 以及它是如何工作的?

如何使用 Firebase 在 Web 上托管 Flutter?它的效果如何?