存储 JWT 服务器端 express.js

Posted

技术标签:

【中文标题】存储 JWT 服务器端 express.js【英文标题】:Storing JWT server side express.js 【发布时间】:2019-08-25 08:45:36 【问题描述】:

我们目前的情况:

我们有一个使用 express.js 构建的内部 Web 应用程序来存储和分析 dna。我们还有一个 3rd 方应用程序,用于存储与实验相关的信息。由于这个第 3 方应用程序也可以存储 dna,我的应用程序中有一个功能可以手动导出 dna 信息,然后可以将这些信息上传到这个第 3 方软件。今天我收到了第 3 方应用程序的 api 密钥,并想在我的同事将 dna 输入我的应用程序时更新它的 dna 库。

我们的目标是:

第 3 方应用程序的 api 给我一个 jwt 令牌,然后我可以使用它在邮递员中发出请求,并且必须在它过期时定期更新。如果我在我的应用程序中的所有服务器端都这样做,我如何存储 jwt 访问令牌,因为这将用于服务器发出的每个请求?有没有办法在 express 中建立一个全局会话?

【问题讨论】:

【参考方案1】:

如果你只需要一个 js 文件中的这个标记,你所要做的就是将变量设置为这个文件的开头,你会引用它。 (全球范围)

如果在多个文件中您有 2 个选项:

丑陋的:

您正在使用global 对象,例如:global.jwt1 = '...'

您创建一个令牌管理器:

let tokens = 

class Manager 
  static get(name) 
    if(!tokens[name]) 
      return null;
    return tokens[name]
  

  static set(name, val) 
    tokens[name] = val
  

module.exports = Manager;

及用法:

const jwt = require('./manager')
jwt.set('client 1', '...')
let t = jwt.get('client 1')

【讨论】:

我最终创建了一个包并设置了一个 Connection 类来管理令牌验证和其他挂钩连接类以获取数据的类

以上是关于存储 JWT 服务器端 express.js的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Express.js 服务器上执行 JWT API 请求? (edX API)

关于 JWT(服务器端和客户端)的一些基本问题

Node.js - Express.js JWT 总是在浏览器响应中返回一个无效的令牌错误

是否在服务器端存储未解码的 jwt 令牌?

Express.js 服务器端渲染 - 请求 '/json/version/

在Javascript(node.js,express.js,ejs)中访问服务器端变量[关闭]