我如何从加密令牌中获得密钥?

问题描述 投票:0回答:1

我有一个节点js应用。我需要使用自己的个人验证方法从生成的令牌中获取密钥。是否有用于JWT的解码令牌方法或从令牌方法中拆分密钥?因为我目前正在通过向标头发送电子邮件地址来提供个人令牌生产,所以我需要一种可以从令牌中获取私钥的方法来防止这种情况。这是我的代码。

这是我在登录代码部分的令牌创建部分:(如果密码为真:)

 const secretKey= user.email;
 const token = jwt.sign({
    email:user.email,
    password: user.password

}, 
secretKey,
{
    expiresIn :"2h"
}
)
return res.status(200).send({ message: 'success', token: token});

然后在中间件中,我使用此代码:

const jwt = require('jsonwebtoken');

module.exports = (req, res, next) => {
try {

const token = req.headers.authorization.split(" ")[1];
const decodedToken = jwt.verify(token, req.headers.user);
req.userData = decodedToken;
next();
}catch(error) {
return res.status(401).send({
message: 'Auth failed'
});
}

还有我的app.js:

 const checkAuth = require('../middleware/checkauth');
 router.get('/api/company',checkAuth,companyController.list);
javascript node.js jwt authorization backend
1个回答
0
投票

您无法从加密令牌中检索密钥,因为否则每个人都可以为您的应用生成有效令牌。您应该将机密保存在本地服务器上,切勿公开。然后,当您调用jwt.verify方法时,您应该传递密码而不是req.headers.user

© www.soinside.com 2019 - 2024. All rights reserved.