Ada*_*ner 5 javascript authentication node.js passport-local passport.js
从文档:
Passport 在 req(也称为 logOut())上公开了一个 logout() 函数,可以从任何需要终止登录会话的路由处理程序调用该函数。调用 logout() 将删除 req.user 属性并清除登录会话(如果有)。
Run Code Online (Sandbox Code Playgroud)app.get('/logout', function(req, res){ req.logout(); res.redirect('/'); });
通过阅读本文并测试自己,似乎并没有logout从客户端中删除 cookie。据我了解,当客户端发出请求时,它会发送它的 cookie,Passport 将其反序列化并转换为req.user.
假设logout不删除cookie,并且Passport 使用cookie 来确定用户是否登录,该logout函数实际上是如何将用户注销的?
大约四年后我遇到了这个问题,幸运的是,我想我现在明白了。
Passport 的logout功能不会为您清除会话 ID cookie。然而,这实际上不是问题。我会解释为什么。
当您登录时,这是如何工作的。当您向服务器发送请求时,会话 ID cookie 将与请求一起发送。然后服务器获取该会话 ID,查找具有活动会话的相应用户,并req.user为您填充。
话虽如此,想想如果您注销会发生什么,但不要清除该会话 ID cookie。下次发送请求时,cookie 仍会一起发送,因为它没有被清除。但是接下来会发生什么?它将尝试查找具有活动会话的相应用户......但它不会找到任何东西!所以req.user最终不会被填充。这就是为什么该 cookie 是否被删除并不是什么大问题。
| 归档时间: |
|
| 查看次数: |
6728 次 |
| 最近记录: |