簡體   English   中英

從另一個端點檢索時,使用 express-session 保存到 req.session 的數據為空

[英]Data saved to req.session using express-session is empty when retrieved from another endpoint

我正在實現快速會話的簡單使用,並將當前登錄的用戶保存到會話中。 當我將它記錄到get路由上的控制台時,會話具有currentUser鍵,但該值只是一個空對象,如果我將currentUser記錄在保存req.session的中間件上,則會話具有正確的數據。 看起來數據沒有持久化,但我覺得奇怪的是它有鍵,但沒有值。

我省略了與問題無關的部分代碼。

 // saveLoggedInUser middleware const saveLoggedInUser = async (req, res, next) => { const User = await req.body; req.session.currentUser = User; req.session.save(); console.log(req.session.currentUser); // Logs correct data //const usersFromDB = await fetchUsersFromDB().catch((e) => {console.log(e)}); //findCommonUser(usersFromDB,User); //app.set('Users', User); next(); }; // GetUserInvoices userInvoices.get('/fetchUserInvoices', async (req,res) => { try { const invoices = await InvoiceModel.find().catch((e) => {console.log(e)}); const user = req.session.currentUser; console.log(user); // logs the empty object value. } catch (error) { console.log(error) } // server.js app.use(express.json()); app.use(cors()); app.use(express.static(path.join(__dirname, 'build'))); app.use('/', cookieValidationMiddleware, StoreInvoiceRouter); app.use(expressSession({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false, cookie: {secure: false} })); app.use('/', saveLoggedInUserMiddleware, UserInvoicesRouter); app.use('/', UpdateUserProfileRouter); app.get('*', async (req,res) => { res.sendFile(path.join(__dirname, 'build', 'index.html')); });

問題是,對於saveLoggedInUser它沒有附加方法。 下面是我使用的最終代碼。

 // server.js app.use( expressSession({ secret: process.env.SESSION_SECRET, resave: false, saveUninitialized: false, }) ); app.use(express.json()); app.use(cors()); app.use(express.static(path.join(__dirname, 'build'))); app.use('/', cookieValidationMiddleware, StoreInvoiceRouter); app.use('/', saveLoggedInUserMiddleware, UserInvoicesRouter); app.use('/', UpdateUserProfileRouter); app.get('*', async (req,res) => { res.sendFile(path.join(__dirname, 'build', 'index.html')); }); //saveLoggedInUser Middleware saveLoggedInUser.post('/saveUser', async (req,res,next) => { const User = await req.body; req.session.currentUser = User; const usersFromDB = await fetchUsersFromDB().catch((e) => {console.log(e)}); findCommonUser(usersFromDB,User); next(); }) // getUserInvoices userInvoices.get('/fetchUserInvoices', async (req,res) => { try { const invoices = await InvoiceModel.find().catch((e) => {console.log(e)}); const user = req.session.currentUser; console.log('USER',user); const userInvoices = await app.get('userInvoices') req.session.invoices = userInvoices var currentInvoices = req.session.invoices; res.json(currentInvoices); } catch (error) { console.log(error) } });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM