流星Accounts.onLogin无限循环

Meteor Accounts.onLogin infinite loop

我在Meteor论坛上看到建议把Meteor.logoutOtherClients放在Accounts.onLogin()里面。虽然这有效,但它有一个问题,那就是当打开多个 TABS(不是浏览器)时,Accounts.onLogin() 会被多次调用。这是预期的输出吗?

下面是我的代码:

Accounts.onLogin(() => {
  console.log('onLogin called')
  Meteor.logoutOtherClients((error) => {
    if (error) {
      console.log(`error: ${error.error}`)
    }
  })

  // Some Meteor Method calls here
  alert('Welcome User!')
})

另一个问题是我在同一个 Accounts.onLogin() 块中进行了方法调用,并且每次都被调用。

meteor@1.4.2.6
accounts-base@1.2.17

问题

  1. 我应该如何防止这种无限调用的发生?
  2. 如果我不能阻止这种情况,当用户登录时,我应该在哪里调度方法调用?因为很明显,如果我把它放在这个代码块中,它会导致调度被无限调用并且 alert 被无限触发。

您还可以在此处查看报告的详细信息:https://github.com/meteor/meteor/issues/8669

这是一个已确认的错误 #8669。所以我的解决方法是为用户创建一个手动令牌,而不是使用 accounts-base 中的默认令牌。我还手动处理了检查,所以基本上摆脱了 "magic" Meteor 优惠。