ユーザーが安全なページにアクセスしたいのにログインしていない場合、そのようにログインページにリダイレクトされるシナリオを構築したいと考えています。
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
これを解決する方法についてのアイデアはありますか? 読んでくれてありがとう。