Meteor.js - 在渲染之前检查登录状态

时间:2014-04-17 17:26:33

标签: javascript meteor iron-router

首先让我们开始说明我是Meteor的完整菜鸟。现在,这就是问题的开始......

我有两个页面,在' /'以及' / home'的主页。我正在使用铁路由器进行路由。现在,如果我没有登录并在启动页面上登录,我将其重定向到主页,这是有效的。现在,如果我关闭浏览器并重新打开并转到' /'加载几秒钟,然后意识到我实际上仍然登录,然后将我重定向到' / home'。

我的问题是如何摆脱' /'当我已经登录?我只想向没有登录的人显示该页面。这是我在路由器中的代码:

    Router.configure({layoutTemplate: 'mainLayout'});

Router.map(function() {
  this.route('splash', {path: '/'});
  this.route('home');
});

var mustBeSignedIn = function(pause) {
  if (!(Meteor.user() || Meteor.loggingIn())) {
    Router.go('splash');
    pause();
  }
};

var goToDashboard = function(pause) {
  if (Meteor.user()) {
    Router.go('home');
    pause();
  }
};

Router.onBeforeAction(mustBeSignedIn, {except: ['splash']});
Router.onBeforeAction(goToDashboard, {only: ['splash']});

希望这有帮助。

1 个答案:

答案 0 :(得分:3)

使用fast-render可能是一种解决方案。跑吧

mrt add fast-render

在此主题上查看this great article