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