簡體   English   中英

節點js中的“清除登錄會話”是什么意思?

[英]What is mean by 'clear the login session' in node js?

我正在使用 express-session 節點模塊,試圖了解節點 js 中的 session。

為什么我們使用 cookies? -> HTTP 是無狀態協議,為了識別來自同一用戶的請求,我們使用 cookie 來識別用戶。

通過使用 express-session,我們可以設置 cookie 配置(maxAge、secretKey 等)

現在如果我們想清除我們使用的會話

req.session.destroy((err) => {
    if(err) {
        return console.log(err);
    }
    res.redirect('/');
 });

代碼運行完美,但清除 session 后的事件,cookie 仍然存在於瀏覽器中。 仍然服務器能夠說您不是有效用戶。

在passport.js req.logout(); 做同樣的事情清除會話,但瀏覽器中仍然存在 cookie。

這是如何運作的?

為什么我們使用 cookies? -> HTTP 是無狀態協議,為了識別來自同一用戶的請求,我們使用 cookie 來識別用戶。

Cookies 用於服務器想要跟蹤來自特定瀏覽器的特定用戶或數據片段。 用戶登錄服務的情況需要知道從一個請求到下一個請求來自誰,是否已作為給定用戶進行身份驗證,等等......cookie用於提供有關未來的信息來自給定用戶的請求。 Cookies 可用於保存所需的特定信息,也可用於保存某種標識符,然后服務器可以使用該標識符為該請求/用戶查找所需的信息。

代碼運行完美,但清除 session 后的事件,cookie 仍然存在於瀏覽器中。 仍然服務器能夠說您不是有效用戶。

A session 通過輸入兩條信息工作。 在服務器上查找來自 cookie 的某種加密 ID 以找到匹配的 session object。 然后 session object 可以包含與該特定用戶相關的信息。 可以通過刪除 cookie 或刪除 session 來終止 session 的有效性。 無論哪種情況,下一個請求都不會來自瀏覽器的加密 ID,可以與 session object 匹配。

刪除 session object 會更安全一些,因為即使您只刪除了 cookie,但 cookie 已被某些中介“竊取”,那么即使 cookie 已從目標瀏覽器。 顯然,如果你刪除服務器上的 session,即使是被盜的 cookie 也沒有任何用處。 It's also useful to free session memory or storage used by a session object that is no longer needed, though in most implementations, they will "time out" at some future time and be cleaned up that way.

在passport.js req.logout(); 做同樣的事情清除會話,但瀏覽器中仍然存在 cookie。

根據Passport 文檔req.logout()從當前請求 object 中刪除req.user屬性並清除登錄 session。 該文檔沒有說明有關修改或刪除登錄 cookie 的任何內容,從邏輯上講,人們會認為清除 cookie 的方法將在res object 上,而不是在req object 上。

暫無
暫無

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

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