2015-02-18 141 views
0

這是我購物車的路由器。流星用戶登錄

Router.route('/bag', function() { 
    //FIXME: upon refresh, Meteor.user() is an empty object it seems? 
    if (Meteor.user()) { 
    this.render('Bag', {to: 'content'}); 
    } else { 
    Router.go('/login'); 
    } 
}); 

當您登錄並點擊鏈接轉到「/ bag」時,所有內容都可以正確呈現。但是,如果您在「/ bag」頁面上刷新頁面,則會將其重定向到「/ login」頁面。我錯過了有關流星的事嗎?我在錯誤的地方打電話Meteor.user()

+0

您是否找到解決方案? – Ethaan 2015-02-18 08:20:04

回答

2

那是因爲Meteor.user()集合尚未準備好,您是否也有加載模板?

嘗試把這個

waitOn:function(){ 
return Meteor.subscribe('someUsercollectionPublish') 
} 

有更多的選擇來實現這一目標。

像使用密碼包中的helper currentUser一樣。

{{#if currentUser}} 
    <!-- show bags stuff --> 
{{else}} 
    {{> login}} <!-- render login Template --> 
{{/if}} 

或使用iron:router方法onBeforeAction

var requireLogin = function() { 
    if (! Meteor.user()) { 
    this.render('login'); 
    } else { 
    this.render('bag'); 
    } 
} 

Router.onBeforeAction(requireLogin, {only: 'bags'});