在 meteor 应用程序上使用 iron-router 和 onBeforeAction 进行重定向

Redirection with iron-router and onBeforeAction on meteor app

我有一个 meteor 应用程序和包 iron-router,如果用户未连接,我会尝试阻止所有页面,除了几个页面。如果未指定任何内容,我们将进入登录页面。 所以在文件 router.js 中,我有:

Router.onBeforeAction(function() {
    if (!Meteor.userId()) { 
        Router.go('login');
    } else {
    this.next();
    }
}, {
except: [
    "login", "landing", "register", "forgotPassword" 
]
});

Router.route('/', function () {
    Router.go('landing');
});

但是当我继续 localhost:3000/ 我被重定向到登录页面而不是登录页面。

如果我删除 onBeforeAction 函数,我将重定向到登录页面。 所以这两个功能一定有问题,但我不知道在哪里。也许我需要在异常中精确说明“/”,但它不起作用。你有什么想法吗?

您也需要在异常中定义路由 '/',否则会被 onBeforeAction

捕获

尝试重新定义如下

Router.onBeforeAction(function() {
    if (!Meteor.userId()) { 
        Router.go('login');
    } else {
    this.next();
    }
}, {
except: [
    "default", "login", "landing", "register", "forgotPassword" 
]
});

Router.route('/', function () {
    Router.go('landing');
}, { 
    name: "default"
} );

在这种情况下,您为路线命名,然后您可以将其添加到您的例外列表中

http://iron-meteor.github.io/iron-router/#named-routes