Подтвердить что ты не робот

Перенаправление после входа в систему с помощью Meteor и Iron Router

Я использую встроенные параметры loginButtons с Meteor, и я бы хотел перенаправить после входа пользователя в систему. Использование встроенных веб-фрагментов означает, что я не могу использовать обратный вызов с Meteor.loginwithPassword, и я не вижу любые крючки внутри Iron-Router, чтобы сделать перенаправление.

Любые предложения?

4b9b3361

Ответ 1

Метеор часто делает так быстро, что страница загружается до того, как пользователь был определен. Вы должны использовать Meteor.loggingIn() для учета ситуации, в которой вы находитесь в процессе входа. Этот код работает для меня:

this.route('myAccount', {
  path: '/',
  onBeforeAction: function () {
    if (! Meteor.user()) {
      if (!Meteor.loggingIn()) Router.go('login');
    }
  }
}

Ответ 2

Этот пример может быть полезен

// main route render a template
Router.route('/', function () {
    this.render('main');
});

// render login template
Router.route('/login', function () {
    this.render('login');
});  


// we want to be sure that the user is logging in
// for all routes but login
Router.onBeforeAction(function () {
    if (!Meteor.user() && !Meteor.loggingIn()) {
        this.redirect('/login');
    } else {
        // required by Iron to process the route handler
        this.next();
    }
}, {
    except: ['login']
});

// add here other routes

// catchall route
Router.route('/(.*)', function () {
    this.redirect('/catchallpage');
});

Ответ 3

должно быть очень просто добавить что-то вроде:

Tracker.autorun(function() {
  var currentRoute = Router.current();
  if (currentRoute === null) {
    return;
  }

  if (currentRoute.route.getName() === 'login' && Meteor.user() !== null)
    Router.go('WelcomeNewUser');
  }

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

просто что-то вроде этого:

this.route('myAccount', {
   before: function () {
     if (!Meteor.user()) {
       this.render('login');
       this.stop();
     }
   }
}

Нет волшебства, просто просмотрел docs;)

Ответ 4

Вы можете просто использовать один из ваших существующих маршрутов, настроенных вами на маршруте в Ирландии.

Router.go( '/myRouterPathToTemplate')