2017-02-22 25 views
0

У меня есть приложение meteor и с пакетом iron-router, я пытаюсь заблокировать все страницы, если пользователь не подключен, за исключением нескольких страниц. И если ничего не указано, мы идем на целевую страницу. Таким образом, в файле router.js, у меня есть:Перенаправление с железным маршрутизатором и onBeforeAction на приложение meteor

Router.onBeforeAction(function() { 
    if (!Meteor.userId()) { 
     Router.go('login'); 
    } else { 
    this.next(); 
    } 
}, { 
except: [ 
    "login", "landing", "register", "forgotPassword" 
] 
}); 

Router.route('/', function() { 
    Router.go('landing'); 
}); 

Но когда я иду на localhost:3000/ я перенаправлены на страницу входа в систему, а не на целевую страницу.

Если я удалю функцию onBeforeAction, я перенаправляюсь на целевую страницу. Так что это должна быть проблема с этими двумя функциями, но я не знаю, где. Возможно, мне нужно уточнить «/» в исключениях, но это не сработает. У вас есть идея?

ответ

0

Вам нужно определить маршрут '/' в ваших исключений тоже, в противном случае это улавливается onBeforeAction

Try заново определяя следующим образом

Router.onBeforeAction(function() { 
    if (!Meteor.userId()) { 
     Router.go('login'); 
    } else { 
    this.next(); 
    } 
}, { 
except: [ 
    "default", "login", "landing", "register", "forgotPassword" 
] 
}); 

Router.route('/', function() { 
    Router.go('landing'); 
}, { 
    name: "default" 
}); 

В этом случае вы называете маршрут, а затем вам можете добавить его в список исключений

http://iron-meteor.github.io/iron-router/#named-routes

+0

Спасибо! Оно работает ! – Adrien