Iron router onBeforeActions正在重定向到startpage

时间:2015-07-19 18:26:01

标签: meteor iron-router

我使用onBeforeActions来检查用户是否已登录,他们的个人资料是否已完整或已停用。这似乎工作正常。

但现在问题是每当我直接进入应用程序内的页面时,我也会被重定向到startPage。我调试并发现了用户'虽然我已登录,但未定义。我使用的是account-fb& -tw和account-ui包。

如何确保用户已登录?我不了解这些功能的正确时间..

编辑: 在当地,我似乎总是遇到这个问题。用户经常被定义。但是在我的生产服务器上(我刚用调试器语句上传它,是的我没有testserver:/)它似乎总是未定义并转发给startPage ..

router.js:

if (Meteor.isClient) {
// only for client, else the serverside router will try to run this onBeforeAction
var onBeforeActions;

onBeforeActions = {
    loginRequired: function() {
        var user = Meteor.user();
        if (!user) {
            Router.go('startPage');
        } else {
            if (user && user.profile && user.profile.incomplete) {
                Router.go('completeSignup');
            }

            if (user && user.profile && user.profile.disable) {
                Router.go('profileEdit');
            }
        }

        this.next();
    }
};

Router.onBeforeAction(onBeforeActions.loginRequired);

Router.configure({
    notFoundTemplate: 'notFound', 
    layoutTemplate: 'layoutMain',
    loadingTemplate: 'loading',
    trackPageView: true
});

Router.map ({});

}

1 个答案:

答案 0 :(得分:1)

用户是否正在登录? Meteor.loggingIn()返回什么?这是我在Coffeescript中使用Iron Router的登录检查。

requireLogin = ->
  if not Meteor.user()
    if Meteor.loggingIn()
      this.render this.loadingTemplate
    else
      this.render 'accessDenied'
  else
    this.next()

尝试这样简单的事情,然后添加你想要做的一些事情。但我很确定Meteor.loggingIn()就是你在这里寻找的。

以下是相关文档:http://docs.meteor.com/#/full/meteor_loggingin

编辑:它可能在本地工作,因为没有任何延迟,所以如果你登录它可以立即运行一切。如果这是有道理的。