Meteor:检查用户是否已登录启动



无论用户是否登录,当我在Meteor.startup()中调用Meteor.user()时,用户始终是undefined(未登录)。

如果页面加载后登录,我想执行一个操作(将用户重定向到必须登录的外部url)。问题是,如果他登录了,页面只会在某个时间点(当然是以毫秒为单位)知道它。我可以用Tracker.autorun捕获最终的登录用户,但我想现在执行操作(当用户总是没有登录时),并且我只知道之后是否需要执行操作(可能用户已经登录)。

如何在流星中做到这一点?

编辑

我最终完成了以下工作:

Tracker.autorun(() => {
    if (!Meteor.user() && !Meteor.loggingIn() && Accounts.loginServicesConfigured()) {
        Meteor.loginWithTwitter();
    }
});

尝试Meteor.loggingIn()

从文档

if a login method (such as Meteor.loginWithPassword, Meteor.loginWithFacebook, or Accounts.createUser) is currently in progress. A reactive data source.

问题的一个解决方案是使用meteorhacks:fast-render包。它的包含导致初始数据集与应用程序代码一起发送,因此用户信息在startup方法中立即可用。

如果你不想使用该软件包,你可以随时重组你的应用程序,这样你所说的"现在"总是在加载初始数据后发生。例如,您可以将此检查移动到根控制器的onBeforeAction回调。假设您也订阅了根控制器中的用户数据,那么它将始终在渲染任何模板之前运行。

最新更新