Node.js Can';登录后无法获取jwt令牌

Node.js Can';登录后无法获取jwt令牌,node.js,express,jwt,jwt-auth,Node.js,Express,Jwt,Jwt Auth,背景 我尝试在这里使用jwt和mysql+sequelize做一个简单的身份验证系统 到目前为止我所能做的 我能够登录并生成一个令牌之后 问题 登录后,当我尝试使用特定路由上的中间件检查jwt令牌时,它只是说找不到该令牌 我想做的事 由于令牌应该在req.headers['x-access-control']或['authorization']中找到,所以我在调用中间件时尝试了console.log(req.headers),但这两个报头没有任何内容。。。那么我想问题可能在那里,但是我不知道如何

背景

我尝试在这里使用jwt和mysql+sequelize做一个简单的身份验证系统

到目前为止我所能做的

我能够登录并生成一个令牌之后

问题

登录后,当我尝试使用特定路由上的中间件检查jwt令牌时,它只是说找不到该令牌

我想做的事

由于令牌应该在req.headers['x-access-control']或['authorization']中找到,所以我在调用中间件时尝试了console.log(req.headers),但这两个报头没有任何内容。。。那么我想问题可能在那里,但是我不知道如何解决这个问题:(

代码片段

这是我用来登录(signIn)和验证令牌(verifyToken)的中间件(userController.js)

下面是app.js文件和路由

const express = require("express");
const app = express();
const port = 3000;

const Sequelize = require("sequelize");
const sequelize = new Sequelize("mydb", "root", "Metin.234", {
  host: "localhost",
  dialect: "mysql"
});
sequelize
  .authenticate()
  .then(() => {
    console.log("Connection with sequelize has been established successfully");
  })
  .catch(err => {
    console.error("Unable to connect", err);
  });

const userController = require("./controllers").user;

var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));

app.get("/", (req, res) => {
  res.render("home");
});

app.get("/register", (req, res) => {
  res.render("register");
});

app.get("/login", (req, res) => {
  res.render("login");
});

app.post("/login", userController.signIn);

app.get("/showAll", userController.verifyToken);

app.listen(port, () => {
  console.log("server started!");
});
提前感谢,感谢您的帮助!=D

编辑
我将令牌保存在一个名为globalToken的变量上,这样就可以在verify token函数上使用它(EDIT 2,它可以很好地满足我的需要),但我想知道如何获取登录过程后发送的响应对象中的accesstoken值。

从我看到的情况来看,您正在响应JSON对象中发送
accesstoken
。您是以正文、查询还是作为头从前端发送回
/showAll
endpoint?您可以共享前端代码吗?另外,请不要使用
req.headers[“x-access-token”]
,而是使用
req.get('x-access-token'))
。req.get不区分大小写,因此如果有人向您发送
X-Access-Token
,它仍然会由该函数返回。您将其作为globalToken发送,并且您正在寻找它作为Token,如果我理解的话,这就是您所做的吗?授权不是以“承载令牌”作为前缀吗?@RogerPeixoto,请参见此示例:,以及medi嗯教程。
const express = require("express");
const app = express();
const port = 3000;

const Sequelize = require("sequelize");
const sequelize = new Sequelize("mydb", "root", "Metin.234", {
  host: "localhost",
  dialect: "mysql"
});
sequelize
  .authenticate()
  .then(() => {
    console.log("Connection with sequelize has been established successfully");
  })
  .catch(err => {
    console.error("Unable to connect", err);
  });

const userController = require("./controllers").user;

var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

app.set("view engine", "ejs");
app.use(express.static(__dirname + "/public"));

app.get("/", (req, res) => {
  res.render("home");
});

app.get("/register", (req, res) => {
  res.render("register");
});

app.get("/login", (req, res) => {
  res.render("login");
});

app.post("/login", userController.signIn);

app.get("/showAll", userController.verifyToken);

app.listen(port, () => {
  console.log("server started!");
});