[英]Correct way to verify Jwt
我在这里写了这段代码
jwt.verify(token.split(':')[1], 'testTest')
我正在尝试验证这一点,以便它可以返回 true 并继续。 jwt 将作为有效负载示例出现
我怎样才能验证这个 jwt
`token.split(':')[1] can match testTest`
jwt.verify
不会这样做。 它使用秘密或公钥验证 jwt。 如果您不想验证它而只想获取有效负载,那么您要做的是解码 jwt,然后检索值并进行字符串比较。
let decoded = jwt.decode(token);
if(decoded.sub == "testTest")
{
//Do your stuff...
}
您可以在他们的github 页面中阅读有关 jwt 的更多信息
我的方法是保持 verify 方法只验证令牌没有被修改:
jwt.verify(token, JWT_SECRET);
并使用decode
方法获取有效载荷:
const payload = jwt.decode(token, JWT_SECRET);
之后,您可以检查您的有效载荷值
第一个重要问题 - 谁是代币发行者?
您是否想验证令牌有效性和/或只是将令牌的内容与给定值进行比较?
验证(和解码)是用
var decoded = jwt.verify(token, '<public key for verification>');
if(decoded.sub == "<value to match>"){
// TODO: implement match case
}
(假设您使用的是 jsonwebtoken 包)
您必须提供由令牌发行者提供的用于验证的公钥。
如果您想正确测试它,我建议在 jwt.io 上生成一个令牌 -> 您可以自己预先生成一个私钥/公钥对,并在解码前将其用于编码和验证。
也可以只对令牌进行解码,但如果没有针对发行者提供的公钥进行验证,任何人都可以向您发送令牌,而这些令牌对您来说将是非常不安全的。
最好的祝愿
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.