如何在登录尝试中找到当前用户

how to find the currentUser on a login attempt

我正在尝试添加一个简单的处理程序来处理用户登录。 我认为这很简单但是......由于某种原因我无法在 Accounts.onLogin 回调中找到用户。

Meteor.startup ->
  if Meteor.isServer

    Accounts.onLogin ->
      console.log("login | onLogin")
      user = Meteor.user()
      console.log("login | onLogin user:", user)

但这永远不会达到第二个 console.log。

如果我注释掉 user = Meteor.user() 则它不会崩溃。

服务端meteor是否可以通过这种方式获取currentUser?

https://docs.meteor.com/#/full/accounts_onlogin

对于客户端,我可以用跟踪器收听, 但是我更愿意在回调事件和服务器端使用它。

奇怪的是,错误总是指向 Meteor.userId(),即使我没有调用它。

I20150109-05:49:02.924(-8)? Exception in onLogin callback: Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.
I20150109-05:49:02.925(-8)?     at Object.Meteor.userId (packages/accounts-base/accounts_server.js:19:1)
I20150109-05:49:02.926(-8)?     at Object.Meteor.user (packages/accounts-base/accounts_server.js:24:1)
I20150109-05:49:02.927(-8)?     at packages/dcsan:mpg/both/startup/AccountsValidation.coffee:43:21
I20150109-05:49:02.928(-8)?     at runWithEnvironment (packages/meteor/dynamics_nodejs.js:108:1)
I20150109-05:49:02.929(-8)?     at packages/meteor/dynamics_nodejs.js:121:1
I20150109-05:49:02.930(-8)?     at packages/accounts-base/accounts_server.js:112:1
I20150109-05:49:02.931(-8)?     at [object Object]._.extend.each (packages/callback-hook/hook.js:102:1)
I20150109-05:49:02.932(-8)?     at successfulLogin (packages/accounts-base/accounts_server.js:111:1)
I20150109-05:49:02.933(-8)?     at attemptLogin (packages/accounts-base/accounts_server.js:283:1)
I20150109-05:49:02.934(-8)?     at [object Object].Meteor.methods.login (packages/accounts-base/accounts_server.js:436:1)

您在这里遗漏了一些东西- Accounts.onLogin 具有参数用户对象 userObject 并且可以通过 userObject.user 访问用户详细信息,使用以下 -

Accounts.onLogin (userObject)->
 # userObject.user object can get you currently successful logged in user 
 console.log("login | onLogin")
 console.log("login | onLogin user:", userObject.user)