【发布时间】:2019-09-16 11:43:36
【问题描述】:
我正在尝试将 reactjs 仪表板放在一起并将其与 Nodejs 后端连接起来。我目前正在尝试验证 jwt 令牌。当我使用 Postman 应用程序执行此操作时,它工作正常。但是当我使用我的 reactjs 表单尝试它时,它没有发生。请帮我在我的代码中找到问题。我不是经验丰富的开发人员。我是 nodejs 和 reactjs 的新手。 任何帮助将不胜感激。 我将尝试在下面发布所有相关代码和一些快照。
//reactjs code calling this function on a button submit
//verify user
onVerify = event => {
let databody = localStorage.getItem("jwtToken");
event.preventDefault();
console.log(databody);
fetch("http://localhost:8000/api/auth/me", {
method: "get",
headers: {
"x-access-token": databody
}
})
.then(res => {
if (res.ok) {
return res.json();
} else {
throw new Error("Something went wrong with your fetch");
}
})
.then(json => {
console.log(json.token);
});
};
Nodejs express 后端代码
//app.js
var express = require("express");
var db = require("./db");
var Cors = require("cors");
var app = express();
app.use(Cors());
var UserController = require("./user/UserController");
app.use("/users", UserController);
var AuthController = require("./auth/AuthController");
app.use("/api/auth", AuthController);
var WorkInvenController = require("./auth/WorkInvenController");
app.use("/api/workinven", WorkInvenController);
module.exports = app;
//AuthController.js
router.get("/me", function(req, res) {
console.log(req.headers);
var token = req.headers["x-access-token"];
if (!token)
return res.status(401).send({ auth: false, message: "No token provided." });
jwt.verify(token, process.env.secret, function(err, decoded) {
if (err)
return res
.status(500)
.send({ auth: false, message: "Failed to authenticate token." });
User.findById(decoded.id, { password: 0 }, function(err, user) {
if (err)
return res.status(500).send("There was a problem finding the user.");
if (!user) return res.status(404).send("No user found.");
res.status(200).send(user);
});
});
});
使用 Postman 发布时来自后端的终端输出
使用来自的 reactjs 发布时来自后端的终端输出
【问题讨论】:
-
您面临的具体问题是什么?两个终端输出都是相同的,只是请求的详细信息。你怎么能说它不工作,工作时应该做什么?
-
对不起..我已经修改了帖子以添加浏览器错误。
-
这意味着,您的 api 出现错误,状态码为 500,您可以在网络选项卡中看到吗? api调用响应?
-
我确实对邮递员进行了同样的尝试,它工作正常......所以我猜我从 reactjs 端发出的 fetch 调用是错误的......或者我的标题有问题吗?
-
您能否在此处添加来自浏览器的网络选项卡的获取请求详细信息?
标签: node.js reactjs express jwt bootstrap-material-design