Я пытаюсь создать панель администратора с помощью Meteor. Я не хочу загружать файлы js и html, связанные с панелью администратора, для обычного пользователя. Нужно загружать их только тогда, когда пользователь вошел в систему. Как я могу этого добиться? (Я использую FlowRouter для управления маршрутами)
В Meteor, как загрузить какой-либо файл только для зарегистрированных пользователей?
Ответы (2)
Во-первых, давайте позаботимся о том, когда на самом деле загружать файлы. Meteor.user()
— это реактивный источник данных, который мы можем использовать в Вычисления трекера :
Tracker.autorun(() => {
if(Meteor.user()) {
loadUserFiles()
}
})
Вы можете загрузить эти файлы с помощью HTTP-запроса, DOM, jQuery, вашей собственной магии DDP...
Вопрос о том, как их загрузить, довольно обширен. Просто убедитесь, что на стороне сервера проверяется, что запрашивающий является зарегистрированным пользователем.
Теперь есть две разные категории файлов, которые вы можете загрузить таким образом в зависимости от вашего варианта использования:
Основные файлы ресурсов
К ним относятся CSS, изображения, HTML, JS, видео или музыкальные (...) файлы, с которыми вы хотите возиться и добавлять их в DOM. То, как вы это сделаете, похоже на любой другой запрос ресурсов, уже существует множество ресурсов, чтобы сделать это красиво с комбинацией запросов jQuery/Node, и вам не нужно ничего менять, чтобы это работало в Meteor.
Вы может потребоваться работа с WebApp.rawConnectHandlers
для проверки пользователя на стороне сервера, если вы используете HTML-запросы. .
Файлы шаблонов HTML
Это сложнее. нельзя запретить клиенту доступ к полученным им шаблонам. Поскольку шаблоны компилируются на стороне сервера и отправляются в виде кода JavaScript, для отправки шаблона части ваших пользователей вам необходимо изменить способ сборки файлов Meteor (или, возможно, использовать тщательно созданный пакет), чтобы иметь возможность загружать шаблоны отдельно.
Однако я не думаю, что это правильный подход. Шаблон — это просто способ показать данные. Если вы контролируете, кому вы отправляете данные, то, если вышедший из системы пользователь получит доступ к защищенному шаблону, он увидит только ошибки и пробелы.
Обратите внимание, что файлы помощников шаблонов попадают в категорию «Основные ресурсы», поэтому имеет смысл загружать некоторые дополнительные помощники таким образом. Вы избавите вышедших из системы клиентов от мертвого кода.
используемый глобальный помощник
Template.registerHelper('isLoged', function () {return Meteor.userId() != null});
if(isLoged()) {// yes login user} else { //redirect }