anv*_*rik 8 node.js jwt express-jwt
我刚刚在我的后端实现了json web令牌认证,我将创建的令牌发送jsonwebtoken
给客户端,如下所示:
var token = jwt.sign(user, secret.secretToken, { expiresInMinutes: 1 });
return res.json({ token: token });
Run Code Online (Sandbox Code Playgroud)
在客户端,我只是将此令牌存储到SessionStorage.问题是令牌在一分钟后没有过期,我错过了什么吗?
编辑:我实现了同样的事情,在这篇文章中显示.
Mar*_*mpf 21
当我没有提供一个对象作为第一个参数时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有一个修复此问题.更多细节在这里.谢谢@gugol的通知.确保传递具有所需属性的普通对象,而不是直接数据库对象或类似对象.
令牌不会自动从会话存储中删除。但是,如果您尝试验证令牌是否有效,则过期的令牌应该无效。
从本教程开始,有效性检查应该抛出异常:
if (token) {
try {
var decoded = jwt.decode(token, app.get('jwtTokenSecret'));
// handle token here
} catch (err) {
return next();
}
} else {
next();
}
Run Code Online (Sandbox Code Playgroud)
verify 也包含在jsonwebtoken包中。这是来自文档:
(与回调同步)如果签名(以及可选的过期、受众、发行者)有效,则返回解码的有效负载。如果不是,它将返回错误。
归档时间: |
|
查看次数: |
16792 次 |
最近记录: |