當我發出一個帖子/登錄請求時,我可以看到我想要的帶有 uid 的會話,但是當我在那之后的幾秒鐘(相同的會話)發出一個 get 請求時,uid 就不再存在了。任何人都可以幫助我嗎?
app.use(session({
secret: "rolling-communication",
rolling: true,
cookie: {
maxAge: 1000 * 60,
}
}));
auth.post("/login", (req, res) => {
const clientReq = req.body;
const loginQuery = 'SELECT uid as UID, password as PWD from Users where email = ?';
pool.query(loginQuery, clientReq.email, async (err, rows) => {
if (rows.length == 1) {
req.session.uid = rows[0].UID;
console.log(req.session); // prints session with uid
});
});
app.get("/test", (req, res) => {
console.log(req.session); // prints session withouth uid
res.end();
});
uj5u.com熱心網友回復:
您顯示的代碼永遠不會從/login請求處理程式發回回應。正是該回應將會話 cookie 傳送回客戶端,使會話為將來的請求作業。如果您從不發送回應,則該 cookie 永遠不會回傳給客戶端,因此當客戶端發出未來請求時,它沒有要發送回的會話 cookie,因此后端不會獲得會話 cookie 并且必須創建一個新的空會話。
始終從每個請求處理程式的每個代碼分支發回回應:
auth.post("/login", (req, res) => {
const clientReq = req.body;
const loginQuery = 'SELECT uid as UID, password as PWD from Users where email = ?';
pool.query(loginQuery, clientReq.email, async (err, rows) => {
if (err) {
console.log(err);
res.sendStatus(500);
return;
}
if (rows.length === 1) {
req.session.uid = rows[0].UID;
console.log(req.session); // prints session with uid
res.send("ok");
} else if (rows.length === 0) {
// user not found
res.sendStatus(404);
} else {
console.log(`login query returned ${rows.length} rows`);
res.sendStatus(500);
}
});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/515853.html
標籤:有角度的表示会议快速会话
