ログインしているかどうかを確認するかなり標準的なフィルターがあります。
requireLogin: function(page) {
if (Meteor.user()) {
return page;
} else if (Meteor.loggingIn()) {
return 'loading';
} else {
return 'login';
}
}
ログインが必要なページに移動すると、URL が変更されていないログイン テンプレートが期待どおりに取得されます。ただし、loginwithpassword でログインしようとすると、loggingin() が少しの間、何も起こらなかったかのようにログイン テンプレートに戻ります (コールバック関数が呼び出されないようです)。同じテンプレートを使用して /login URL からログインすると、問題なくログインできます。
ログインコード:
'click .userlogin':function(e, tmpl) {
Meteor.loginWithPassword(
{email: tmpl.find("#emailInput").value},
tmpl.find("#passInput").value,
function(err){
if (err) {
// handle error
Session.set('errorMessage', err.reason || 'Unknown error');
Session.set("showErrorMessage", true);
} else {
// show an alert
Meteor.Router.to('/profile');
}
});
}