Я хочу создать сценарий, в котором, если пользователь хочет получить доступ к защищенной странице, но он не вошел в систему, он будет перенаправлен на страницу входа в систему, например.
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
Любые идеи о том, как я могу это решить? Спасибо за чтение.