javascript - JWT 使用算法 ES256 生成令牌
问题描述
我正在尝试使用算法 ES256 生成 accessToken,并使用以下非常非常简单的代码:
const jwt = require('jsonwebtoken')
const accessToken = jwt.sign(
{ name: 'John' },
'testsecret',
{ expiresIn: '24h' },
{ algorithm: 'ES256' }
)
console.log(accessToken)
我得到了一个令牌,如下所示:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiIsImlhdCI6MTYxNDY4MzUxNCwiZXhwIjoxNjE0NzY5OTE0fQ.Q9quAufyTQvPvKrTUXzRDUo-o0M4yXSXjqU4vZ9nvvA
我尝试将其粘贴到 jwt.io,它似乎是 HS256 令牌而不是 ES256,我错过了什么吗?
有些事情我做的不对。您可以随时将上面的代码粘贴到 nodejs 中,您会看到。
解决方案
您只需要组合expiresIn
和algorithm
参数 - 该模块采用单个选项对象:
const jwt = require('jsonwebtoken');
const privatekey = `-----BEGIN EC PRIVATE KEY-----
MHcCAQEEICXoLhGdD6jzX5ePTY9O9YBgv0ZZ6oBWDRsjKaeASXp6oAoGCCqGSM49
AwEHoUQDQgAELCnuRSU9Vf+bx65i3Vbibj123RQFrIEaXuMuXunzPXGURKge07fy
FoiMucdGZ2MZGsm37JdlnVGd5yU1h4D4Rg==
-----END EC PRIVATE KEY-----`
const payload = {"id":1}
const accessToken = jwt.sign(payload, privatekey, {
expiresIn: "24h",
algorithm: "ES256",
});
推荐阅读
- javascript - 如何将 CSS 和 JS 文件链接到我的 github 页面的 HTML 文件?
- postgresql - 在 postgresql 中复制表时包含引用
- node.js - 向世界开放 Nodejs 服务器端口是否安全?
- azure - Azure 中的 ansible VM 可以查询自己的 VM 标签吗?
- asynchronous - 实现异步“优先级”分块的最佳方法是什么?
- java - 地图的分组和聚合列表
- web - 无法让 Scrapy 在 Mac Os Catalina 上工作
- java - 符合 FIPS 140-2 - Oracle 开源“jdk1.8.0_151”
- sql - SQL - 用+=连接变量while循环中的字符串
- php - Symfony - 有没有办法将实体设置为全局?