React令牌未定义(但在Postman中我可以拥有令牌)



我使用route app.get('/jwtid')在我的react应用中捕捉home上的令牌。这条路线与邮递员一起工作,我的服务器给我发了令牌但是当我在React上执行get axios时,我在服务器上得到了一个未定义的令牌。

这是我的authJwt.js:

const jwt = require("jsonwebtoken");
const config = require("../config/auth.config.js");

verifyToken = (req, res, next) => {
const token = req.cookies.jwt;
console.log(req.cookies.jwt);
if (!token) {
return res.status(403).send({
message: "No token provided!"
});
}
jwt.verify(token, config.secret, (err, decoded) => {
if (err) {
return res.status(401).send({  
message: "Unauthorized!"
});
}
req.id = decoded.id;
next();
});
};
const authJwt = {
verifyToken: verifyToken,
};
module.exports = authJwt;

My route jwtid:

app.get('/jwtid', verifyToken, (req, res) => {
res.status(200).send(res.locals.id)
});

My React get token app.js React:

import "./App.css";
import React from "react";
import Route from './components/Route';
import axios from "axios";
import { token } from "morgan";
import { EmailJSResponseStatus } from "@emailjs/browser";
function App() {
let user = JSON.parse(localStorage.getItem("user"));
console.log(user);
console.log("tokenId")
const config ={
token: user
};
console.log(config)
console.log("config")
axios({
'method': "get",
'url': `${process.env.REACT_APP_API_URL}jwtid`, config,
'withCredentials': true,
'body': JSON.stringify(config),
})  .then(function (response) {
console.log(response.data);
// I need this data here ^^
return response.data;
})
.then((res) => {
if (res.error) { 
console.log(res.error);
alert("The response data is invalid")
} })
.catch((err) => console.log("No token"))
return (
<div> 
<Route/>
</div> 
);
}
export default App;

我用localstorage捕获令牌所以我在axios上调用它get令牌,这是我的返回:

控制台结果

如果有人有解决办法:')

在React中,您在body'body': JSON.stringify(config)中发送令牌,而在Node.js中,您将cookieconst token = req.cookies.jwt;设置为接收

所以你需要把token变量改成const token = req.body.token

我找到了解决方案:在我的前面"登录"。当我呼唤"公理"时;对于张贴我的登录,我必须加上withCredentials: true。这样的:

axios({
method: "post",
url: `${process.env.REACT_APP_API_URL}api/auth/login`, 
data: values,
withCredentials: true,
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(values),
})

感谢这篇文章:cookie httponly未发送

相关内容

最新更新