基本上,如果我在一個路由上宣告一個會話變數,我就不能在另一個路由中訪問它(未定義)。
這是我的中間件:
app.use(cors({
origin: ["http://localhost:3000"], methods: ["GET", "POST"] }));
app.use(session({
secret: process.env.SESSION_SECRET,
resave: false, saveUninitialized: false
}));
這是我的 /log-in 路線:
router.post('/api/users/auth/log-in/', async (req, res) => {
// ... user authentication logic, here 'authenticated' boolean is defined
req.session.authenticated = authenticated;
req.session.save();
if (authenticated) req.session.user = req.body.username;
res.json({"success": true, "authenticated": authenticated});
});
如果我在這條路線中記錄會話變數,它作業得很好。
但是,在另一條路線中,當訪問 with 時req.session.authenticated,變數回傳一個undefined.
我確定我遺漏了一些東西,但我無法讓它發揮作用。任何幫助表示贊賞!
澄清一下,如果我從 REST 客戶端執行所有這些(登錄并檢查我是否通過身份驗證),它就可以正常作業。
uj5u.com熱心網友回復:
如果它通過您的 REST 客戶端而不是通過應用程式正常作業,則可能意味著 cookie 沒有被發送。您是否檢查過開發者工具網路選項卡中的請求?
只是對您的代碼的一個小說明:
// this has no impact because after this route completes, req is destroyed.
// It is the express-session middleware that will pickup the cookie
// and populate the req.session object for incoming each request.
if (authenticated) req.session.user = req.body.username;
uj5u.com熱心網友回復:
結果我錯過了每次獲取的憑據處理,所以沒有發送 cookie
添加credentials: 'include'到每個獲取請求解決了它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/366990.html
標籤:javascript 节点.js 表达 会议 快速会话
