0

我想构建一个场景,如果用户想要访问安全页面并且他们没有登录,他们会被重定向到这样的登录页面。

FlowRouter.route('/add',{
    name: 'add',
    triggersEnter: [function(context, redirect) {
        if(!Meteor.userId()){
            redirect('login/add');
        }
    }],
    action(){
        BlazeLayout.render('noHeroLayout', {
            main: 'add'
        });
    }
});

基本上,安全页面“添加”检查用户是否登录,如果没有重定向到登录/添加。一旦登录路由被调用,它就会检查是否提供了链接回的路由,如下所示:

FlowRouter.route('/login/:callback',{
    name: 'login',
    action(){
        BlazeLayout.render('noHeroLayout', {
            main: 'login'
        });
    }
});
FlowRouter.route('/login',{
    name: 'login',
    action(){
        BlazeLayout.render('noHeroLayout', {
            main: 'login'
        });
    }
});

现在对于我的 login.js 逻辑,它看起来像这样

'submit #app-login-user-internal': function(e,t){
    e.preventDefault();
    var email = t.find('#app-email-login-internal').value;
    var password = t.find('#app-password-login-internal').value;
    Meteor.loginWithPassword(email,password,function(err){
        if(err){
            alert("Wrong Credentials");
        }
        else{
            var callback = FlowRouter.getParam('callback');
            if(!callback){
                FlowRouter.go('home');
            }
            else{
                FlowRouter.go(callback);
            }
        }
    });
},

基本上在提交时,如果登录路由中存在回调,则如果用户已登录,则重定向到该回调路由,如果未提供回调,则返回主页。

我的问题是当没有提供回调时,我会毫无问题地被重定向到家。当我未登录时调用“添加”时,控制台上出现以下错误。

There is no route for the path: login/add

关于如何解决这个问题的任何想法?感谢您的阅读。

4

1 回答 1

0

将您的重定向更改为此

redirect('/login/add');

添加一个斜线。

于 2015-12-04T12:34:35.833 回答