簡體   English   中英

如何使用 express-session 檢測第一個連接

[英]How to detect first connection using express-session

它必須是本地的,我錯過了什么嗎? 我可以設置一個綁定到 request.session 變量的計數器,不過,我想要一種更明確的方式。

如果您想使用 express-session,它沒有內置的方式來知道會話何時是全新的。 計數器是一個簡單的解決方案。 或者,這個簡單的中間件實現了您詢問的isNew屬性,並避免保存會話,除非前兩次訪問它:

app.use(session(...));

app.use((req, res, next) => {
    if (typeof req.session.isNew === "undefined") {
        req.session.isNew = true;
        req.session.save(next);
    } else if (req.session.isNew) {
        req.session.isNew = false;
        req.session.save(next);
    } else {
        next();
    }
});

// output value of isNew (only here for demonstration purposes)
app.use((req, res, next) => {
   console.log(req.session.isNew);
   next();
});

我應該補充一點,這也試圖通過在更新后立即保存會話(到會話存儲)來避免競爭條件,所以如果兩個請求及時到達並且第一個請求異步允許第二個請求開始,那么第二個仍然會看到req.session.isNew的准確值。

req.session.isNew

session 總是通過請求對象訪問,還有一個名為 isNew 的布爾字段。

編輯:這是 cookie-session 的一部分,它是一個會話中間件。

暫無
暫無

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

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