我正在尝试使用算法 ES256 生成 accessToken,我使用以下代码:
const jwt = require('jsonwebtoken')
const accessToken = jwt.sign(
{ name: 'John' },
'testsecret',
{ expiresIn: '24h' },
{ algorithm: 'ES256' }
)
console.log(accessToken)
我得到了如下令牌:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoiSm9obiIsImlhdCI6MTYxNDY4MzUxNCwiZXhwIjoxNjE0NzY5OTE0fQ.Q9quAufyTQvPvKrTUXzRDUo-o0M4yXSXjqU4vZ9nvv A
我尝试将其粘贴到 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",
});