Auth 中间件总是打印未定义的角色

编程入门 行业动态 更新时间:2024-10-04 19:34:38

Auth <a href=https://www.elefans.com/category/jswz/34/1771157.html style=中间件总是打印未定义的角色"/>

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 中间件总是打印未定义的角色

本文发布于:2024-05-30 23:09:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771024.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中间件   角色   未定义   Auth

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!