gpt4 book ai didi

javascript - Node.js njwt 签名验证失败

转载 作者:行者123 更新时间:2023-11-30 14:40:53 25 4
gpt4 key购买 nike

我正在构建一个应用程序,我想在其中使用 jwt-tokens 进行身份验证。我遵循了本网站上的教程:https://stormpath.com/blog/nodejs-jwt-create-verify

问题是当我想使用验证函数时出现此错误: JwtParseError: 签名验证失败。

我不知道我做错了什么。

在我创建 token 的那一刻,我将它与 key 一起保存在我的数据库中。然后我将这个 token 发送到浏览器。浏览器发回这个 token ,那时我在我的数据库中搜索 token 。然后我使用 token 和与其一起存储的 key 进行验证。在那一刻我得到了错误。

构建 token 并存储它时的代码:

                        let secretkey = Jwt.createKey();
let token = Jwt.getToken(message.id, message.adress, 0);
const mySql = new mysql();
mySql.insertToken(message.id, token, secretkey);

获取 token 并验证时的代码:

        mySql.getFromDB(token,(err, result)=>{
let body = result[0];
const Jwt = new jwt();
let secretkey = Buffer.from(body.secretkey, 'base64');
let jwtcheck = Jwt.checkJWT(body.token, secretkey);
//console.log(jwtcheck);

另一件奇怪的事情是当我运行 jwt.io 调试器时。我输入我的 token ,它说验证失败,但是当我点击“ secret base64 编码”按钮时,它说签名已验证。

有人能帮帮我吗?

谢谢

更新*

jwt.getToken 代码:

    createKey()
{
this.secretkey = uuid();
return secretkey;
}


createClaims(ssub, iiss, ppermissions)
{
let claims = {
sub: ssub,
iss: iiss,
permissions: ppermissions
};
return claims;
}



createJWT(secretkey, sub, iss, permissions)
{
const jwt = nJwt.create(this.createClaims(sub, iss, permissions), secretkey);
return jwt;
}


getToken(sub, iss, permissions)
{

const jwt = this.createJWT(this.secretkey, sub, iss, permissions);
const token = jwt.compact();
return token;
}

最佳答案

所以我想通了。我创造 secret 的那一刻。我必须将它编码为 base64,所以该方法将如下所示:

createKey()
{
this.secretkey = uuid();
console.log(secretkey);
this.secretkeybase = Buffer.from(secretkey).toString('base64');
return this.secretkeybase;
}

此时 token 得到验证。

关于javascript - Node.js njwt 签名验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49680574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com