我使用passport-google-oauth模块在我使用Express.js构建的web应用程序上对用户进行身份验证。注销事件的处理方式如下:
app.get('/logout', function(req, res) {
console.log("logged out!");
req.logout();
res.redirect('/');
});虽然这确实将用户重定向到登录页面(在/),但我不确定它是否真的将他注销。单击注销后,当我在一个新选项卡中打开Gmail时,我仍然在那里登录(不,我之前没有登录到Gmail )。我怎么才能解决这个问题?另外,req.logout()是如何登录用户的呢?
发布于 2014-08-27 10:14:34
这是完全正常的。当用户使用他的Google帐户登录到您的应用程序时,他也会登录到所有的Google。
req.logout()只销毁用户登录时由Passport创建的会话。该会话只链接到您的应用程序,而不是整个用户的Google配置文件。
如果你也想从他的Google帐户中注销用户,你必须通过点击按钮或类似的方式将他重定向到https://accounts.google.com/logout。
但这是一个非常有争议的政策,因为,如果你已经登录到gmail,YouTube等.,你将同时退出所有的谷歌服务。很烦人。
有关更多信息,请查看this great answer by jmort253。
发布于 2015-05-27 08:06:03
这是因为谷歌的会话还没有到期,所以你可以在谷歌端使用这个会话。
// route for logging out
app.get('/logout', function(req, res) {
req.session.destroy(function(e){
req.logout();
res.redirect('/');
});
});它会破坏你的会话从应用程序。但是,如果您想完全注销,即使是从google帐户,您可以重定向到
地址
https://stackoverflow.com/questions/25519179
复制相似问题