Страница приложения зависает для вошедшего в систему пользователя при выполнении сброса метеора
Когда у меня активен токен для входа в Meteor и я выполняю сброс БД с помощью meteor reset
, страница приложения сильно зависает при перезагрузке. Такое ощущение, что страница продолжает загружаться, хотя на странице нет ничего, с чем я мог бы взаимодействовать. Консоль браузера также зависает. Протестировано на Chrome и Firefox, с одинаковым поведением. Но когда я пытаюсь удалить кэш для домена приложения (через настройки браузера, так как инструменты dev находятся в бессознательном состоянии), все становится хорошо, я перенаправляюсь на страницу входа (как указано в моей конфигурации маршрута), и в консоли браузера появляется следующее сообщение: You've been logged out by the server. Please log in again
, Это мой глобальный хук onBeforeAction от Iron Router:
Router.onBeforeAction(function () {
document.documentElement.className = 'gt-ie8 gt-ie9';
var currentUser = Meteor.user(),
currentRoute = this.route.getName(),
routeOptions = {},
userRoles,
userCompany, userTeam,
allowedRoutes;
// prevent not logged in user from visiting the app
// console.log(this.next);
if (!currentUser) {
this.redirect('login');
// return;
} else {
userRoles = currentUser.roles;
userRoles = userRoles.length ? userRoles : ['member'];
userCompany = currentUser.companyId || null;
userTeam = currentUser.teamId || null;
// get current user allowed routes (for highest role)
allowedRoutes = _.filter(SW.roles, function (appRoute, index) {
return userRoles.indexOf(index) > -1;
});
allowedRoutes = allowedRoutes && allowedRoutes.length ? allowedRoutes[0].routes : [];
// if not all routes are allowed
if (allowedRoutes.indexOf('*') === -1) {
// restrict if route is not allowed
if (!allowedRoutes.length || allowedRoutes.indexOf(currentRoute) === -1) {
this.redirect('member.self');
}
}
}
this.next();
}, {
except: ['enroll', 'login', 'logout']
});
Я также должен упомянуть, что это очень странная проблема, которая возникает на рабочем сервере гораздо чаще, чем при проведении локального тестирования.
1 ответ
Проблема, похоже, исчезла с последним обновлением Meteor (1.0.2.1). Тем не менее, это может быть из-за этой проблемы с Fast Render (исправлено в 2.1.0), который я использую в своем проекте.