Meteorで組み込みのloginButtonsオプションを使用しています。ユーザーがログインした後にリダイレクトしたいと思います。組み込みのWebスニペットを使用すると、Meteor.loginwithPasswordでコールバックを使用できず、内部にフックが表示されません。リダイレクトを行うためのIron-Router。
助言がありますか?
多くの場合、Meteorは非常に高速にレンダリングされるため、ユーザーが定義される前にページがロードされます。あなたがログインしているプロセス中である状況を説明するには、Meteor.loggingIn()
を使用する必要があります。このコードは私にとってはうまくいきます:
this.route('myAccount', {
path: '/',
onBeforeAction: function () {
if (! Meteor.user()) {
if (!Meteor.loggingIn()) Router.go('login');
}
}
}
この例は役に立つかもしれません
// 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');
});
次のようなものを追加するだけで非常に簡単です:
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 ;)を見ただけで、魔法はありません。
アイルランドのルートで構成した既存のルートの1つを使用するだけです
Router.go( '/ myRouterPathToTemplate')