CNode

jwt同样的内容生成的token不一样

问答
Ttinycold发布于8 年前最后回复8 年前2 回复5656 浏览0 收藏

直接贴代码吧:

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)

D
DerekYeung#1·8 年前

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

'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

T
tinycold#2·8 年前
引用 DerekYeung与进程无关,与签发时间有关 试一下 https://github.com/auth0/node jsonwebtoken/blob/master/sign.js L141

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

参与回复
登录后即可参与回复。登录