[英]Meteor router working in dev mode but not in production mode
我試圖保護管理員頁面,所以為它創建了一個角色。 我正在使用iron:router進行路由,在生產模式下,我遇到了一個問題:每次在瀏覽器中鍵入url / admin時,我都以/ user結尾(這是登錄頁面)。 我在開發人員模式下沒有這個問題! 我真的不明白為什么
這是代碼:
var middleware;
middleware = {
isAdmin: function() {
var user;
user = Meteor.user();
if (!Roles.userIsInRole(user, ['admin'])) {
this.redirect('user');
return;
}
return this.next();
}
};
對於路由器:(在
Router.map(function() {
this.route('user', {
path: '/user'
});
return this.route('admin', {
path: '/admin',
before: [middleware.isAdmin]
});
});
我以前有這個問題。 問題是流星識別您是登錄用戶的延遲。
在應用程序中導航時, Meteor.user()
保持設置,因此您可以到達自己的路線。 輸入URL時,將執行整頁刷新,以便在Meteor完成登錄之前調用路由掛鈎。
因此, user = Meteor.user();
將user
設置為null
,您將被重定向到用戶頁面。
您可以使用Meteor.loggingIn()
來檢查登錄過程是否仍在進行中。 可以將Iron Router的waitOn
掛鈎用於此操作(或者在大多數情況下僅設置定時延遲就可以解決問題)。
所以實際上我只是使用了快速渲染,它可以自動解決我的問題。 希望對別人有幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.