簡體   English   中英

流星路由器在開發模式下工作,但不在生產模式下工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM