劫持Meteor帐户-ui注销按钮

时间:2016-03-09 19:34:38

标签: meteor package override

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

据我所知,有一种方法register a function when the user logs in,但用户退出时不会触发类似的事件。接下来最好的是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文件夹中,并在那里进行修改,但之后我将错过可能为该软件包提供的任何更新。

拦截注销呼叫的最佳做法是什么?

1 个答案:

答案 0 :(得分:1)

另一种方法是跟踪Tracker中的登录状态:

Tracker.autorun(function(){
  if ( Meteor.userId() ){
    ... do things for a logged-in user
  } else {
    ... do things for a logged-out user
  }
});

当登录状态发生变化时,此自动运行块将自动运行,因为Meteor.userId()是一个被动数据源。