属性'alg'” JWT"/>
“ ErrorTypeError:无法读取未定义的属性'alg'” JWT
我正在学习教程:
并且在注册本地部分时出现错误
弃用未处理的诺言。
但是我设法通过使用try-catch块解决了这个问题。但是再次由于主要错误:
TypeError: Cannot read property 'alg' of undefined
即使注册非常成功,我提出的每个请求也会返回一个错误。
错误使我指向此块:
signToken = user => {
return JWT.sign({
iss: 'CodeWorkr',
sub: user.id,
iat: new Date().getTime(), // current time
exp: new Date().setDate(new Date().getDate() + 1) // current time + 1 day ahead
}, JWT_SECRET);
}
这是什么原因,如何解决?
这是完整的控制器代码:
const JWT = require('jws');
const User = require('../models/user');
const { JWT_SECRET } = require('../configuration');
signToken = user => {
return JWT.sign({
iss: 'CodeWorkr',
sub: user.id,
iat: new Date().getTime(), // current time
exp: new Date().setDate(new Date().getDate() + 1) // current time + 1 day ahead
}, JWT_SECRET);
}
module.exports = {
signUp: async (req, res, next) => {
try {
const { email, password } = req.body;
// Check if there is a user with the same email
const foundUser = await User.findOne({ "local.email": email });
if (foundUser) {
return res.status(403).json({ error: 'Email is already in use'});
}
// Create a new user
const newUser = new User({
method: 'local',
local: {
email: email,
password: password
}
});
await newUser.save();
// Generate the token
const token = signToken(newUser);
// Respond with token
res.status(200).json({ token });
} catch (err) {
res.status(500).send({
message: "Error" + err
})
}
},
signIn: async (req, res, next) => {
// Generate token
const token = signToken(req.user);
res.status(200).json({ token });
},
googleOAuth: async (req, res, next) => {
// Generate token
const token = signToken(req.user);
res.status(200).json({ token });
},
facebookOAuth: async (req, res, next) => {
// Generate token
const token = signToken(req.user);
res.status(200).json({ token });
},
secret: async (req, res, next) => {
console.log('I managed to get here!');
res.json({ secret: "resource" });
}
}
回答如下:首先,我得到了答案。我想知道我在这个问题中的标签是如何吸引更少的SO用户的。在我看来,当您使用移动开发标签时,可以更快地获得答案。
答案是该项目以某种方式需要错误的库?在示例项目中,它具有:
const JWT = require('jws');
但是查看了更多JWT示例项目后,我意识到应该是:
const jwt = require('jsonwebtoken');
已解决!
更多推荐
“ ErrorTypeError:无法读取未定义的属性'alg'” JWT
发布评论