【发布时间】:2022-06-17 13:40:50
【问题描述】:
我正在使用一个中间件,我必须检查用户是否经过身份验证,但是当我在前端已经有一个 cookie 时,我无法从 react to express js 中获取 cookie,如下图所示:
这是我的 express js 代码
require("dotenv").config();
const port = process.env.PORT || 5050;
const express = require("express");
const app = express();
const cors = require("cors");
const cookieParser = require("cookie-parser");
const mongoose = require("mongoose");
const { authenticate } = require("/controllers/user");
const Post = require("/models/post");
// mongodb connection
app.use(cookieParser());
app.use(cors({
origin: 'http://localhost:3000',
credentials: true
}))
app.use(express.json());
app.use(express.urlencoded({ extended: true }));
app.get("/api/post/:slug", authenticate , async (req, res) => {
const slug = req.params.slug;
const post = await Post.findOne({ slug })
res.send(post);
});
app.listen(port, () => {
console.log("Blog server is running!!");
})
这里我有验证中间件的代码
const authenticate = async (req, res, next) => {
console.log(req.cookies["token"])
next();
}
预期的代码应该在控制台中记录token cookie。但是我在 express js 控制台中有 undefined 像这样!
下面我给你看前端代码
import { useParams } from 'react-router-dom'
export default function Post() {
const [post, setPost] = useState([]);
const loadPost = async () => {
const { slug } = useParams();
const all_posts = await fetch(`http://localhost:5000/api/post/${slug}`)
const res = await all_posts.json();
setPost([res]);
}
useEffect(() => {
loadPost();
}, [])
return (
<>
...///
</>
)
}
【问题讨论】:
标签: javascript node.js reactjs mongodb cookies