Nano Hash - криптовалюты, майнинг, программирование

FlowRouter по умолчанию перенаправляет на целевую страницу

Я пытаюсь иметь такие защищенные маршруты: 1). loggedin user group routes 2.) admin routes, 3.) student routes, 4.) public routes. LoggedInUser работает, как и ожидалось, но 2 других маршрута - schooladmin и students не работают должным образом.

После входа в систему в качестве администратора или студента, в соответствии с ожиданиями, соответствующие пользователи должны иметь возможность переходить по разрешенным URL-адресам, но всякий раз, например, если администратор школы переходит на http://localhost/students автоматически перенаправляет обратно на панель инструментов, а также для студента. Что мне делать правильно?

Эта группа маршрутов допускает только зарегистрированных пользователей.

var LoggedInUser = FlowRouter.group({
  name: 'currentUser', triggersEnter: [function (context, redirect) {
    if (Meteor.loggingIn() || Meteor.userId()) {
      FlowRouter.watchPathChange();
      let currentRoute = FlowRouter.current();
      if (!currentRoute.path) {
        FlowRouter.go('/dashboard');
      } else {
        FlowRouter.go(currentRoute.path);
      }

    } else {
      redirect('/');
    }
  }]
});

Это группа маршрутов для школьных администраторов.

var schooladmin = LoggedInUser.group({
  name: 'schooladmins', triggersEnter: [function (context, redirect) {
    FlowRouter.watchPathChange();
    let currentRoute = FlowRouter.current();
    if (Roles.userIsInRole(Meteor.userId(), ['super-admin', 'admin'])) {
      console.log(currentRoute.path);
      FlowRouter.go(currentRoute.path);
    } else {
      redirect('dashboard');
    }
  }]
});

Это маршрут для студентов

var students = LoggedInUser.group({
  name: 'students', triggersEnter:[function (context, redirect) {
    FlowRouter.watchPathChange();
    let currentRoute = FlowRouter.current();
    if (Roles.userIsInRole(Meteor.userId(), ['manage-team', 'student-page'])) {
      FlowRouter.go(currentRoute.path);
    } else {
      redirect('dashboard');
    }
  }]
});

Примеры маршрутов, к которым привязаны группы Этот пример маршрута предназначен только для администраторов школы.

schooladmin.route('/students', {
  name: 'students', action(){
    BlazeLayout.render('formrender', {formrend: 'student'});
  }
});

этот маршрут предназначен для доступа студента

students.route('/student/dashboard', {
  name: 'students-dashboard', action(){
    BlazeLayout.render('studentlayout', {studentrender: 'studentdashboard'});
  }
});

Ответы:


1

Пакет ролей на самом деле зависит от подписки, а это означает, что если подписка не готова, метод Roles.userIsInRole всегда будет возвращать false. И тогда ваш маршрут не работает, потому что FlowRouter работает всегда, несмотря ни на что. Это происходит в очень специфических случаях, но это случается, и ваши пользователи это заметят.

К счастью, теперь есть исправление. Мы можем иметь полный контроль над тем, когда инициализируется FlowRouter.

Есть 2 способа добиться этого.

  1. Чуть выше объявления FlowRouter используйте метод Accounts.onLogin(function(user){}); для проверки роли и перенаправления. (проверьте user._id для ролей)

  2. Нажмите здесь для второго решения https://medium.com/@satyavh/using-flow-router-for-authentication-ba7bb2644f42

23.09.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..