我在节点js中使用jsonwebtoken包。我正在生成这样的令牌:
var token = jwt.sign({ email: email }, secret, { expiresIn: 144000 });
生成令牌,但是当我查看Chrome的Cookie控制台时," Expires / Max-Age"列是"会话",而不是24小时,正如我所料。我也尝试将expiresIn设置为' 1d',但结果是一样的。
感谢。
答案 0 :(得分:0)
服务器计算token
后,必须将其发送给客户端。然后,客户端有责任将令牌作为每个后续HTTP请求的Authorization
HTTP头的参数发送。换句话说,客户端负责为每个单个HTTP请求将应用程序状态传递给Web服务器。
客户端如何存储此类信息不是Web服务器的顾虑,只关心其自身资源的状态。两种常见的策略是本地存储,还有cookie。
由于令牌是自包含的,因此服务器不需要存储客户端状态。也就是说,不需要服务器端会话,从而使相应的会话cookie设置与令牌的行为无关。事实上,服务器只需要解码请求中HTTP Authorization
标头中提供的令牌,并检查exp
日期。如果报告的时间戳大于当前时间戳,则令牌已过期,服务器应拒绝进一步处理该请求。
观察到这两个方面(即,客户端需要处理应用程序状态以及随后在服务器中缺少此类数据)允许根据REST无状态约束实现客户端/服务器交互。