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);
            }
        }
    });
},

基本的に、コールバックがログインルートに存在する場合は送信時に、ユーザーがログインしている場合はそのコールバックルートにリダイレクトし、コールバックが提供されていない場合はホームに戻ります。

私の問題は、コールバックが提供されない場合、問題なくホームにリダイレクトされることです。ログインしていないときに「add」を呼び出すと、コンソールに次のエラーが表示されます。

There is no route for the path: login/add

これを解決する方法についてのアイデアはありますか? 読んでくれてありがとう。

4

1 に答える 1

0

リダイレクトをこれに変更します

redirect('/login/add');

スラッシュを追加します。

于 2015-12-04T12:34:35.833 に答える