2015-07-27 4 views
0

Я создал приложение, использующее метеорит, и столкнулся с проблемой при входе в систему. У меня есть страница администратора, доступная только администратору. Приложение проверяет объект пользователя, чтобы узнать, является ли атрибут isAdmin истинным или ложным. Если оно ложно, приложение отобразит страницу с запретом доступа. Тем не менее, при переходе на страницу администратора с учетной записью, где isAdmin истинно, страница с запретом доступа слегка мерцает, прежде чем отвезти меня на страницу администратора. Может кто-нибудь помочь? Я думаю, что проблема имеет какое-то отношение к асинхронному характеру Метеор. Вот мой контроллер администратора, который имеет логику маршрутизации:Метеор асинхронный журнал в выпуск

adminController = RouteController.extend({ 
waitOn: function() { 
    Meteor.subscribe('adminView'); 
}, 
onBeforeAction: function() { 
    var currUserId = Meteor.userId(); 
    var currUser = Meteor.users.findOne({_id: currUserId}); 
    if (!currUser.isAdmin) { 
     this.render('accessDenied2'); 
    } else { 
     this.next(); 
    } 
} 
}); 

ответ

0

Вы можете просто проверить, есть ли в первую очередь. Затем страница не будет отображаться, пока данные пользователя не будут доступны:

onBeforeAction: function() { 
    var currUser = Meteor.users.findOne(Meteor.userId()); 
    if(currUser) { 
     if (!currUser.isAdmin) { 
      this.render('accessDenied2'); 
     } else { 
      this.next(); 
     } 
    } 
} 
Смежные вопросы