我刚刚实现了一个 json 网络 token 身份验证,在我的后端,我将 jsonwebtoken
创建的 token 发送给客户端,如下所示:
var token = jwt.sign(user, secret.secretToken, { expiresInMinutes: 1 });
return res.json({ token: token });
在客户端,我只是将此 token 存储到 SessionStorage。问题是 token 不会在一分钟后过期,我是不是漏掉了什么?
编辑: 我实现了与 this 中所示的相同内容发布。
最佳答案
当我没有提供对象作为 jwt.sign
的第一个参数时,我发现自己遇到了同样的问题,例如jwt.sign('testuser', secret.secretToken, { expiresIn: '1h' });
.
jwt.sign
的这种错误用法确实有效,即使它是错误的,它只是忽略了提供的设置。 https://github.com/auth0/node-jsonwebtoken/issues/64
确保提供一个对象作为第一个参数,例如 jwt.sign({user: 'testuser'}, secret.secretToken, { expiresIn: '1h' });
更新: 已经报告了使用非标准 javascript 对象的问题,例如 mongoose。版本 5.5.2 对此进行了修复。更多详情 here .感谢@gugol 的通知。确保传递具有所需属性的普通对象,而不是直接的数据库对象或类似对象。
关于node.js - Json 网络 token 不会过期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23626823/