Javascript 如何使用NodeJS将jwt令牌从控制器传递到路由器

Javascript 如何使用NodeJS将jwt令牌从控制器传递到路由器,javascript,node.js,Javascript,Node.js,开发者您好,问题很简单, 我已经使用jwt.sign()在我的登录函数中生成了一个jwt令牌,并且我有模型/控制器/路由器架构, 所以问题是:如何将生成的令牌从登录控制器功能传递到路由器。 我曾多次尝试将令牌分配给常量变量以发送它,并抛出一个对象并将其发送到路由器文件,但当我从jwt.sign()函数退出时,它会显示未定义 PS:我只是在后端使用NodeJS和fastfy,并通过Postman发送http请求,我在前端没有使用任何框架 有一些代码可以帮助您了解我的情况: UserRouter.j

开发者您好,问题很简单,
我已经使用
jwt.sign()
在我的登录函数中生成了一个
jwt
令牌,并且我有模型/控制器/路由器架构,
所以问题是:如何将生成的令牌从登录控制器功能传递到路由器。
我曾多次尝试将令牌分配给常量变量以发送它,并抛出一个对象并将其发送到路由器文件,但当我从
jwt.sign()
函数退出时,它会显示
未定义
PS:我只是在后端使用
NodeJS
fastfy
,并通过
Postman
发送http请求,我在前端没有使用任何框架
有一些代码可以帮助您了解我的情况:

UserRouter.js:(登录路径):

用户控制器:

exports.login = async (user_email, password) => {
  try {
    console.log("Login into API");
    const email = user_email.toLowerCase();
    const user = await User.findOne({ email });

    if (user) {
      console.log(" Hashed Passwd ", user.password);
      console.log("User Passwd", password);

      let result = await bcrypt.compareSync(password, user.password);
      if (result) {
        // Tryed also with const = await jwt.sign()
        jwt.sign({ user }, "secretkey", (err, token) => {
          if (err) throw err;
          console.log("The Token is", token);
        });
        return {
          Message: "Login success",
          statusCode: 200
          //token: token
        };
      } else {
        return { Message: "Incorrect password", statusCode: 401 };
      }
    } else {
      return { Message: "ERROR" };
    }
  } catch (err) {
    throw boom.boomify(err);
  }
};

如果查看包,您会发现
jwt.sign
在提供回调时不返回任何内容

所以你应该做的是:

const-token=jwt.sign({user},“secretkey”);

这将使库同步工作并返回令牌。

当您要使用令牌时,为什么要在jwt.sign()中使用回调。只需使用
const-token=jwt.sign({user},“secretkey”)成功了,非常感谢您的帮助!好的,伊玛,把这作为一个答案
exports.login = async (user_email, password) => {
  try {
    console.log("Login into API");
    const email = user_email.toLowerCase();
    const user = await User.findOne({ email });

    if (user) {
      console.log(" Hashed Passwd ", user.password);
      console.log("User Passwd", password);

      let result = await bcrypt.compareSync(password, user.password);
      if (result) {
        // Tryed also with const = await jwt.sign()
        jwt.sign({ user }, "secretkey", (err, token) => {
          if (err) throw err;
          console.log("The Token is", token);
        });
        return {
          Message: "Login success",
          statusCode: 200
          //token: token
        };
      } else {
        return { Message: "Incorrect password", statusCode: 401 };
      }
    } else {
      return { Message: "ERROR" };
    }
  } catch (err) {
    throw boom.boomify(err);
  }
};