中间件总是打印未定义的角色"/>
Auth 中间件总是打印未定义的角色
我正在为我的后端创建带有 express 和 mysql 的电子商务应用程序。我需要使用中间件保护我的路线并检查用户是卖家还是客户,然后我尝试制作 auth 中间件但它仍然会抛出错误。
这里是中间件
const jwt = require('jsonwebtoken');
const auth = (req, res, next) => {
try {
const token = req.headers.authorization.split(' ')[1];
if (!token) {
return res.status(401).json({
status: 'error',
error: 'Authentication failed',
});
}
const decodedToken = jwt.verify(token, 'JWT_SECRET');
req.user = decodedToken;
console.log(req.user.role);
next();
} catch (error) {
return res.status(500).json({
status: 'error',
data: error.message,
});
}
};
const isSeller = (req, res, next) => {
try{
//console.log(req.user.role);
if (!req.user || req.user.role !== 'seller') {
return res.status(403).json({
status: 'error',
error: 'User is not a seller',
});
}
next();
}catch (error) {
return res.status(500).json({
status: 'error',
error: error.message,
});
}
};
module.exports = {
auth,
isSeller,
};
我尝试检查为什么它总是抛出错误,我用
console.log
来检查它并打印未定义。我需要知道为什么它是未定义的。
这是用户登录时生成的令牌。
const token = jwt.sign(
{
userId: existingUserByUsername.id,
username: existingUserByUsername.username,
email: existingUserByUsername.email,
role: existingUserByUsername.role
},
'JWT_SECRET'
);
return token;
回答如下:
更多推荐
Auth 中间件总是打印未定义的角色
发布评论