我正在使用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文件夹中,并在那里进行修改,但之后我将错过可能为该软件包提供的任何更新。
拦截注销呼叫的最佳做法是什么?
答案 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()
是一个被动数据源。