2017-10-06 42 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