【发布时间】:2021-06-20 23:36:02
【问题描述】:
我使用 nodejs 创建 Api 服务器,使用 reactjs 创建客户端, 客户端运行在 url:5000 和客户端运行到 url:3000,分别运行。 客户端向服务器端发送请求并返回给它。 我在服务器中创建了一个会话,当我使用登录功能连接时,我使用 jwt 返回了一些令牌,然后我将令牌返回给客户端,但是客户端浏览器中的问题我没有 session.id
这是我的代码 appjs
const express = require('express');
const app = express();
const session = require('express-session');
const cors = require('cors');
const cookieParser = require('cookie-parser')
const resource = require('./resources/en-US');
const dotenv = require('dotenv');
dotenv.config();
var corsOptions = {
origin: 'http://localhost:3000',
credentials: true,
optionsSuccessStatus: 200 // For legacy browser support
}
const authRouter = require('./routes/auth-router');
const adminRouter = require('./routes/admin-router');
app.use(cors(corsOptions));
app.use(express.json());
// app.use(cookieParser());
const http = require('http').createServer(app);
const mongoose = require('mongoose');
const MongoStore = require('connect-mongodb-session')(session);
const store = new MongoStore({
uri : process.env.MONGODB_URL,
collection:'session',
});
app.use(session({
secret: process.env.SESSION_SECRET_KEY,
resave: true,
saveUninitialized: true,
store: store,
cookie: { secure: true,httpOnly:true }
}))
app.use('/api', authRouter);
app.use('/api', adminRouter);
mongoose
.connect(process.env.MONGODB_URL,{
useNewUrlParser:true,
useCreateIndex:true,
useUnifiedTopology:true
})
.then(() => console.log('connected'))
.catch(err => console.log(err))
http.listen(process.env.PORT, () => {
console.log(`listening on port ${process.env.PORT}`);
});
当我转到 Api 服务器中的其他路由并尝试打印 req.session 时,我看不到存储数据的会话。
我需要帮助, 有什么问题?
【问题讨论】:
-
您的 cookie 配置有
secure: true,这要求您的服务器是 https 而不是 http。 -
这行不通。
-
你能显示你向服务器发出请求的客户端代码吗?
-
我用新的答案编写客户端代码
标签: node.js reactjs mongodb express session