meteor iron-router

Redirigir después de iniciar sesión utilizando Meteor y Iron Router



iron-router (4)

Este ejemplo podría ser útil

// 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''); });

Estoy usando las opciones integradas de loginButtons con Meteor y me gustaría redirigir después de que un usuario inicie sesión. Usar los fragmentos web integrados significa que no puedo usar la devolución de llamada con Meteor.loginwithPassword y no puedo ver ningún gancho dentro. Iron-Router para hacer la redirección.

¿Alguna sugerencia?


Simplemente puede usar una de sus rutas existentes que haya configurado en la ruta Irlanda

Router.go (''/ myRouterPathToTemplate'')


debería ser muy fácil solo agregar algo como:

Tracker.autorun(function() { var currentRoute = Router.current(); if (currentRoute === null) { return; } if (currentRoute.route.getName() === ''login'' && Meteor.user() !== null) Router.go(''WelcomeNewUser''); }

También puede usar la misma ruta con otra plantilla en caso de que el usuario no haya iniciado sesión.

algo como esto:

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

No hay magia, solo busqué en los docs ;)


Meteor a menudo renderiza tan rápido que la página se carga antes de que el usuario haya sido definido. Necesita usar Meteor.loggingIn() para tener en cuenta la situación en la que está en proceso de iniciar sesión. Este código funciona para mí:

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