其他浏览器窗口在Meteor.logout()之后不会返回用户登录页面

时间:2015-10-27 14:52:15

标签: javascript meteor iron-router

我用用户登录编写了一个流星应用程序。用户注销后,应用程序将重定向到用户登录页面。但是,当它们是应用程序处于活动状态(并且用户已登录)的浏览器(或多个浏览器窗口)中的多个选项卡时,只有活动选项卡或浏览器窗口返回到用户登录页面。在另一个窗口中,用户似乎仍然登录。但是,当用户在另一个窗口中执行某些进一步的工作时,不再与服务器上的数据库同步。我认为Meteor.logout()是被动的,那么其他浏览器标签或窗口怎么可能不刷新?

我的路由器中有以下内容?js文件:

var filters = {
 isLoggedIn : function(pause) {
  if(!Meteor.user()){
   this.render('login');
  } else {
   this.next();
  }
 }

....

}

Router.onBeforeAction(filters.isLoggedIn);

按下注销按钮后,执行以下js代码

Meteor.logout();

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

试试这个:

Meteor.logoutOtherClients

Meteor.logoutOtherClients应该注销所有会话。它适用于用户登录多个设备并希望同时注销所有设备的情况。

答案 1 :(得分:0)

在我的应用中,我不想在注销时使用全局重定向,但在某些模板上,如果发生注销,则会重定向到另一个模板。

在秋季伦纳德的评论之后,我通过创建一个template.mytemplate.onCreated函数让特定模板具有反应性来完成这项工作,并在里面放置一个自动运行功能来检查Meteor.user()并进行重定向。 / p>

我希望这种方法有助于其他人:)