如何保护JWT令牌并在nodejs / angular中刷新令牌
我是节点js的新手。我正在构建一个简单的笔记记录应用程序,并希望使用JWT令牌进行身份验证并保护我的API。在研究中,我知道我需要创建两个令牌:
- 访问令牌(较短的到期时间,例如10分钟)
- 刷新令牌(最长到期时间为30天)
访问令牌可以保存在本地存储中。但将刷新令牌另存为纯HTTP Cookie。我需要以下几点的答案(请记住,我只是一个初学者):
- 如何将刷新令牌存储为仅HTTP cookie(任何node-js代码示例将有很大的帮助)?
- 如何在客户端保护它,我应该将刷新令牌保存到数据库吗?
- 还有其他更好的解决方案来保护我的API吗?
请参阅本示例,我如何在nodjs中保护我的getByRefId api:
在路由文件中:
router.get(“ / refId /:refId”,helper.auth,groupController.getByRefId);
helper.auth是函数:
auth:(要求,要求,下一个)=> {var令牌= req.body.token || req.headers ['authorization'] || req.headers [ '授权'];
if (token.startsWith('Bearer ')) {
// Remove Bearer from string
token = token.slice(7, token.length).trimLeft();
}
if (token) {
jwt.verify(token, 'MY_SECRET', function (err, decoded) {
if (err) {
console.error('JWT Verification Error', err);
return res.status(403).send(err);
} else {
req.payload = decoded;
return next();
}
});
} else {
res.status(403).send('Token not provided');
}
}
此用法jwt = require('jsonwebtoken')库,您可以将其安装在nodejs项目中
如何保护JWT令牌并在nodejs / angular中刷新令牌
我是节点js的新手。我正在构建一个简单的笔记记录应用程序,并希望使用JWT令牌进行身份验证并保护我的API。在研究中,我知道我需要创建两个令牌:
- 访问令牌(较短的到期时间,例如10分钟)
- 刷新令牌(最长到期时间为30天)
访问令牌可以保存在本地存储中。但将刷新令牌另存为纯HTTP Cookie。我需要以下几点的答案(请记住,我只是一个初学者):
- 如何将刷新令牌存储为仅HTTP cookie(任何node-js代码示例将有很大的帮助)?
- 如何在客户端保护它,我应该将刷新令牌保存到数据库吗?
- 还有其他更好的解决方案来保护我的API吗?
请参阅本示例,我如何在nodjs中保护我的getByRefId api:
在路由文件中:
router.get(“ / refId /:refId”,helper.auth,groupController.getByRefId);
helper.auth是函数:
auth:(要求,要求,下一个)=> {var令牌= req.body.token || req.headers ['authorization'] || req.headers [ '授权'];
if (token.startsWith('Bearer ')) {
// Remove Bearer from string
token = token.slice(7, token.length).trimLeft();
}
if (token) {
jwt.verify(token, 'MY_SECRET', function (err, decoded) {
if (err) {
console.error('JWT Verification Error', err);
return res.status(403).send(err);
} else {
req.payload = decoded;
return next();
}
});
} else {
res.status(403).send('Token not provided');
}
}
此用法jwt = require('jsonwebtoken')库,您可以将其安装在nodejs项目中