如何在登录尝试时找到currentUser

时间:2015-01-09 14:16:47

标签: login meteor

我正在尝试添加一个简单的处理程序来处理登录时的用户。 我认为这很简单,但是......由于某种原因,我无法在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(),那么它就不会崩溃。

是否可以通过这种方式从服务器端流星获取currentUser?

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

对于客户端我可以用跟踪器收听, 但我更愿意在回调事件和服务器端使用它。 https://stackoverflow.com/a/16353336/1146785

奇怪的是错误总是引用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)

1 个答案:

答案 0 :(得分:0)

你在这里遗漏了一些东西 - 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)