劫持 Meteor 帐户-ui 注销按钮

Hijacking the Meteor accounts-ui logout button

我正在使用 Meteor 的 accounts-ui 包来创建 Sign-up/Log-in 小部件。我希望未登录的用户能够继续匿名使用我的应用程序,因此我想检测用户何时退出。

据我所知,有一种方法可以接受回调函数register a function when the user logs in but no similar event is triggered when the user logs out. The next best thing is the Meteor.logout(\[callback\])命令。

我在/Users/<name>/.meteor/packages/accounts-ui-unstyled/.1.1.8.cfkrwq++os+web.browser+web.cordova/web.browser/login_buttons.js

中找到了以下代码行
Template.loginButtons.events({ 
  'click #login-buttons-logout': function() {
    Meteor.logout(function () {
      loginButtonsSession.closeDropdown();
    });
  }
});

我想在这里添加对我自己的方法的调用,但我不希望在我使用accounts-ui的所有项目中都调用此方法。我知道我可以将 accounts-ui-unstyled/ 文件夹复制到该项目根目录下的 packages 文件夹,并在那里修改它,但这样我就会错过任何可能为该包交付的更新。

拦截注销调用的最佳实践方法是什么?

另一种方法是在 Tracker:

中跟踪登录状态
Tracker.autorun(function(){
  if ( Meteor.userId() ){
    ... do things for a logged-in user
  } else {
    ... do things for a logged-out user
  }
});

此自动运行 块将在登录状态更改时自动运行,因为Meteor.userId() 是一个反应性数据源。