javascript - Meteor 路由器在开发模式下工作,但在生产模式下不工作

标签 javascript meteor iron-router

我正在尝试保护管理页面,因此我为其创建了一个 Angular 色。我使用 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 延迟识别您是登录用户。

在应用程序内导航时,Meteor.user()保持设置状态,以便您可以到达您的路线。输入 URL 时,您会执行整个页面刷新,以便在 Meteor 完成登录之前调用路由 Hook 。

因此,user = Meteor.user();将设置usernull您将被重定向到用户页面。

您可以使用Meteor.loggingIn()检查登录过程是否仍在进行。铁路由器的waitOn可以使用钩子(Hook)(或者在大多数情况下仅设置定时延迟就可以解决问题)。

关于javascript - Meteor 路由器在开发模式下工作,但在生产模式下不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31139340/

相关文章:

meteor - 如何根据某些表达式更改 layoutTemplate?铁路由器

javascript - meteor 和 Stripe 整合

javascript - Angular.js ng-repeat 验证条件中的多个输入

callback - 如何让 Meteor.Call 返回模板值?

html - 为什么我的 2 列纯 CSS 布局不起作用?

javascript - Meteor.js - 在渲染前检查登录状态

javascript - APIwelcomescreen.close(); JavaScript 不起作用

javascript - 从数据库引导模态动态数据

javascript - Meteorjs - Meteor.call ('myMethod' )返回三个对象而不是一个数组?

css - 地铁 :iron-router-progress in Meteor 0. 9.1.1