jwt同样的内容生成的token不一样
发布于 6 年前 作者 tinycold 4227 次浏览 来自 问答

直接贴代码吧:

const jwt = require('jsonwebtoken')

var token
token = jwt.sign({ foo: 'bar' }, 'shhhhh')
console.log(token)

token = jwt.sign({ foo: 'bar' }, 'shhhhh')
console.log(token)

token = jwt.sign({ foo: 'bar' }, 'shhhhh')
console.log(token)

第一次执行这个代码,连续生成并且打印三次token,三次打印出的token都是一样的。

第二次执行这个代码,生成的token与第一次执行时不一样。

也就是不同的进程,生成的token是不一样的。为什么?

我理解的的HAC算法应该是固定的输入就有固定的输出

2 回复

与进程无关,与签发时间有关

'use strict';

const jwt = require('jsonwebtoken');

const payload = {
  foo: 'bar',
  iat: 1531471777
};

const secret = 'shhhhh';

const tokens = [
  jwt.sign(payload, secret),
  jwt.sign(payload, secret),
  jwt.sign(payload, secret),
];

console.log(tokens);

试一下

https://github.com/auth0/node-jsonwebtoken/blob/master/sign.js#L141

@DerekYeung Thanks very very very much! 这个问题导致的一系列问题困扰我很久很久啦。 总算搞清楚了

回到顶部