Meteor:Iron-router仅在成功登录后呈现主页

时间:2014-09-19 13:11:47

标签: meteor iron-router

我有以下路由,只希望执行Router.go('home');成功登录后。

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

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

我的布局模板包含我不想在登录页面上显示的导航栏。

如何GLOBAllY进行此设置,以便在用户未登录时,页面会重定向“登录”模板?我只想在用户未登录时显示我的登录模板。

提前感谢您的贡献!

2 个答案:

答案 0 :(得分:3)

这将呈现' signin'模板本身,换句话说,作为单个页面。

Router.configure({
    layoutTemplate: 'master_layout',
    loadingTemplate: 'loading',
});

var OnBeforeActions;

OnBeforeActions = {
    loginRequired: function(pause) {
      if (!Meteor.userId()) {       
        Router.go('signin');
        return pause();
      }
    }
};
Router.onBeforeAction(OnBeforeActions.loginRequired, {
    except: ['signin']
});

Router.map(function() {
    this.route('signin',{
        path: 'SignIn',
        layoutTemplate: 'signin'  // override main layout and use 'signin' templatate as main layout
    });

    this.route('notFound', {
    path: '*'
    });

});

答案 1 :(得分:0)

Router.configure({
  onBeforeAction: function(pause) {
    if(!Meteor.userId()) {
      this.redirect('login');
    }
  },
});