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

时间:2016-04-18 13:33:34

标签: authentication meteor

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

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

如何在Meteor中执行此操作?

修改

我最终完成了以下工作:

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

2 个答案:

答案 0 :(得分:2)

尝试body { margin:0; } header { background-color: black; color: white; text-align: center; width: 100%; height: 20%; margin: 0px; } menu { background-color: gray; color: white; height: 60%; width: 10%; float: left; margin: 0px; -webkit-padding-start: 0px; } content { background-color: blue; float: left; color: white; width: 90%; height: 60%; margin: 0px; } footer { clear: both; background-color: black; color: white; width: 100%; height: 20%; margin: 0px; }

来自文档

Meteor.loggingIn()

答案 1 :(得分:1)

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

如果您不想使用该软件包,您可以随时重新构建应用程序,以便在加载初始数据后始终发生您所说的“现在”。例如,您可以将此检查移至根控制器的onBeforeAction回调。这将始终在呈现任何模板之前运行,假设您还在根控制器中订阅了用户数据。