FlowRouter.go(redirect); //gets triggered, but site does not actually redirect until refreshed.
Я следовал этому руководству, чтобы структурировать свои маршруты:
var authorised = FlowRouter.group();
var publicRoutes = FlowRouter.group();
FlowRouter.triggers.enter([isUserSignedIn]);
authorised.route('/',{
name:'root',
action(){
BlazeLayout.render('App_body',{ main: 'App_home'});
}
});
publicRoutes.route('/welcome',{
name : 'welcome',
action(){
BlazeLayout.render('Unauthorised', { main: 'welcome' });
}
});
function isUserSignedIn(){
if (!Meteor.user() || Meteor.loggingIn()){
var route = FlowRouter.current();
if (route.path != "/welcome") {
// Set Session to redirect path after login
Session.set("redirectAfterLogin", route.path);
}
console.log("user is not signed in");
FlowRouter.go('welcome');
}
};
// Redirect After Login
Accounts.onLogin(function(){
console.log("Accounts.onLogin()");
var redirect = Session.get("redirectAfterLogin");
if (redirect){
console.log("redirect path exists")
if(redirect != "/welcome"){
console.log("redirect is not welcome path, redirect to ", redirect);
FlowRouter.go(Session.get("redirectAfterLogin"));
}
}
else{
// if redirect doesn't exist, go "/"
console.log("no redirection, go root");
FlowRouter.go('root');
}
})
// Not Found
FlowRouter.notFound = {
action() {
BlazeLayout.render('Unauthorised', { main: 'App_notFound' });
},
};
Приведенный выше код делает следующее:
Случай 1: Force Session.set("redirectAfterLogin", "/blah");
- Выход из приложения.
- Введите в консоли
Session.set("redirectAfterLogin", "/blah");
- Авторизоваться
- Observe the following output in console:
Accounts.onLogin()
redirect path exists
redirect is not welcome path, redirect to /blah
Но я все еще на «Неавторизованном» макете с «приветственным» шаблоном».
- Нажимаю обновить, меня перенаправляет на "Не найдено" - это правильный результат.
Случай 2: Session.get("redirectAfterLogin") не определен
- Выход из приложения.
- Введите в консоли
Session.set("redirectAfterLogin");
- Авторизоваться
- Observe the following output in console:
Accounts.onLogin()
no redirection, go root
Но я все еще на «Неавторизованном» макете с «приветственным» шаблоном».
- Нажимаю обновить, меня перенаправляет на "/" - это правильный результат.
Что именно мешает логике здесь? Пожалуйста помоги!