2017-10-06 41 views
0

Hellooo,所以我有一個node.js服務器在後臺運行,我相信這是「登錄」用戶(我沒有寫入後端)。通過刪除cookie在JavaScript中註銷用戶?

app.use(function (req, res, next) { 
    var nodeSSPI = require('node-sspi'); 
    var nodeSSPIObj = new nodeSSPI({ 
     retrieveGroups: true, 
     domain: "CAMISCOM" 
    }); 
    if (req.secure) { 
     nodeSSPIObj.authenticate(req, res, function (err) { 
      res.finished || next(); 
    }); 
    } else { 
     next(); 
    } 
}); 

登錄框看起來像這樣在Chrome 61:

enter image description here

,當我做「清除瀏覽數據 - > Cookie和其他網站數據」而已,它會記錄我發現我出去了。同時關閉瀏覽器並重新打開登錄。

我試過在前端清除cookie,但document.cookie是一個空字符串。我有點迷失在這裏。我如何實現註銷功能?

謝謝!

更新: 我相信我應該試圖刪除後端的req.connection.user。目前我在前端調用一個ajax調用後端的路由器,從那裏我有權訪問req,我把它設置爲null,但這不是做任何事情

最終更新: 我的解決方案是有後臺做

delete req.connection.user 
delete req.connection.userSid 
delete req.connection.userGroups 

通過路由器,然後該路由器成功後重定向到https://log:[email protected]

+3

如果cookie中HTTPOnly你將無法從JS訪問它。 – Joe

+0

在開發者工具 - >應用程序 - > Cookies中,沒有顯示任何cookie –

+2

註銷是服務器端操作。使客戶端忘記其會話不會終止服務器上的會話 - 它只會創建已註銷的外觀。 – Ags1

回答

0

看來從節點,SSPI Github上現場一些測試代碼,您註銷用戶在服務器上這樣做的請求期間:

delete req.connection.user; 
delete req.connection.userSid; 
delete req.connection.userGroups; 

這有點奇怪,沒有用於記錄某人的文檔。


這也許是過於有關:How to log out user from web site using BASIC authentication?

+0

可能是一個愚蠢的問題,但通過路由器(POST)這樣做是因爲「在服務器上執行此操作」 –

+1

@JustinBraham - 是的,只要請求來自用戶,那麼這是一個完美的地方想要註銷。 – jfriend00

+1

@JustinBraham - 給我的答案增加了另一個想法。 – jfriend00