我想构建一个场景,如果用户想要访问安全页面并且他们没有登录,他们会被重定向到这样的登录页面。
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
关于如何解决这个问题的任何想法?感谢您的阅读。