Meteor Iron Router OnBefore钩子,参数URL不调用函数

Meteor Iron Router OnBefore钩子,参数URL不调用函数,meteor,iron-router,Meteor,Iron Router,我希望使用iron router限制对页面的访问,但是before函数似乎没有运行 # Limit which challenges can seen to members. isMemberHook = () -> challenge = Challenges.findOne _id: @params._id if Meteor.userId() in challenge.members @next() else @redirect

我希望使用iron router限制对页面的访问,但是before函数似乎没有运行

# Limit which challenges can seen to members.
isMemberHook = () ->
    challenge = Challenges.findOne _id: @params._id
    if Meteor.userId() in challenge.members
        @next()
    else
        @redirect '/'

Router.onBeforeAction isMemberHook,
    only: ['/challenge/:_id']

您必须小心地说明用户何时登录、何时未登录以及何时登录

下面是我放置在
onBeforeAction
hook中的
requireLogin
函数的代码

如果没有Meteor用户,检查他们是否正在登录,如果是,则呈现加载模板

var requireLogin = function() {
  if (! Meteor.user()) {
    if (Meteor.loggingIn()) {
      this.render(this.loadingTemplate);
    } else {
      this.render('AdminLogin');
    }
  } else {
    this.next();
  }
};

Router.onBeforeAction(requireLogin, {only: ['AdminMain', 'postSubmit', 'appointmentsList', 'AppointmentShow']});
编辑

好的,这就是正在发生的事情:

文档中不完全清楚的是数组在
onBeforeAction

Router.onBeforeAction(requireLogin, {only: ['routeName', 'anotherRouteName']});
下面是一组使用钩子的路线:

  this.route('/order', {
    template: 'order',
    name: 'order',
    layoutTemplate: 'layout'
  });

  this.route('/order/:_id', {
    template: 'order',
    name: 'orderEdit',
    layoutTemplate: 'layout',
    data: function(){
      var id = this.params._id;
      alert(id);
    }
  });

  var beforeHook = function(){
    console.log("beforeHook run!");
    alert("safsf");
  };

  Router.onBeforeAction(beforeHook, {only: ['orderEdit']});

您必须小心地说明用户何时登录、何时未登录以及何时登录

下面是我放置在
onBeforeAction
hook中的
requireLogin
函数的代码

如果没有Meteor用户,检查他们是否正在登录,如果是,则呈现加载模板

var requireLogin = function() {
  if (! Meteor.user()) {
    if (Meteor.loggingIn()) {
      this.render(this.loadingTemplate);
    } else {
      this.render('AdminLogin');
    }
  } else {
    this.next();
  }
};

Router.onBeforeAction(requireLogin, {only: ['AdminMain', 'postSubmit', 'appointmentsList', 'AppointmentShow']});
编辑

好的,这就是正在发生的事情:

文档中不完全清楚的是数组在
onBeforeAction

Router.onBeforeAction(requireLogin, {only: ['routeName', 'anotherRouteName']});
下面是一组使用钩子的路线:

  this.route('/order', {
    template: 'order',
    name: 'order',
    layoutTemplate: 'layout'
  });

  this.route('/order/:_id', {
    template: 'order',
    name: 'orderEdit',
    layoutTemplate: 'layout',
    data: function(){
      var id = this.params._id;
      alert(id);
    }
  });

  var beforeHook = function(){
    console.log("beforeHook run!");
    alert("safsf");
  };

  Router.onBeforeAction(beforeHook, {only: ['orderEdit']});

您必须小心地说明用户何时登录、何时未登录以及何时登录

下面是我放置在
onBeforeAction
hook中的
requireLogin
函数的代码

如果没有Meteor用户,检查他们是否正在登录,如果是,则呈现加载模板

var requireLogin = function() {
  if (! Meteor.user()) {
    if (Meteor.loggingIn()) {
      this.render(this.loadingTemplate);
    } else {
      this.render('AdminLogin');
    }
  } else {
    this.next();
  }
};

Router.onBeforeAction(requireLogin, {only: ['AdminMain', 'postSubmit', 'appointmentsList', 'AppointmentShow']});
编辑

好的,这就是正在发生的事情:

文档中不完全清楚的是数组在
onBeforeAction

Router.onBeforeAction(requireLogin, {only: ['routeName', 'anotherRouteName']});
下面是一组使用钩子的路线:

  this.route('/order', {
    template: 'order',
    name: 'order',
    layoutTemplate: 'layout'
  });

  this.route('/order/:_id', {
    template: 'order',
    name: 'orderEdit',
    layoutTemplate: 'layout',
    data: function(){
      var id = this.params._id;
      alert(id);
    }
  });

  var beforeHook = function(){
    console.log("beforeHook run!");
    alert("safsf");
  };

  Router.onBeforeAction(beforeHook, {only: ['orderEdit']});

您必须小心地说明用户何时登录、何时未登录以及何时登录

下面是我放置在
onBeforeAction
hook中的
requireLogin
函数的代码

如果没有Meteor用户,检查他们是否正在登录,如果是,则呈现加载模板

var requireLogin = function() {
  if (! Meteor.user()) {
    if (Meteor.loggingIn()) {
      this.render(this.loadingTemplate);
    } else {
      this.render('AdminLogin');
    }
  } else {
    this.next();
  }
};

Router.onBeforeAction(requireLogin, {only: ['AdminMain', 'postSubmit', 'appointmentsList', 'AppointmentShow']});
编辑

好的,这就是正在发生的事情:

文档中不完全清楚的是数组在
onBeforeAction

Router.onBeforeAction(requireLogin, {only: ['routeName', 'anotherRouteName']});
下面是一组使用钩子的路线:

  this.route('/order', {
    template: 'order',
    name: 'order',
    layoutTemplate: 'layout'
  });

  this.route('/order/:_id', {
    template: 'order',
    name: 'orderEdit',
    layoutTemplate: 'layout',
    data: function(){
      var id = this.params._id;
      alert(id);
    }
  });

  var beforeHook = function(){
    console.log("beforeHook run!");
    alert("safsf");
  };

  Router.onBeforeAction(beforeHook, {only: ['orderEdit']});

结果表明,对于带有“/”的路线,您需要使用“.”

因此,在本例中,我使用:

only: ["challenge.:_id"]

问题解决了

结果表明,对于带有“/”的路线,您需要使用“.”

因此,在本例中,我使用:

only: ["challenge.:_id"]

问题解决了

结果表明,对于带有“/”的路线,您需要使用“.”

因此,在本例中,我使用:

only: ["challenge.:_id"]

问题解决了

结果表明,对于带有“/”的路线,您需要使用“.”

因此,在本例中,我使用:

only: ["challenge.:_id"]


问题解决了

是的,这适用于所有路线。我上面的代码将在特定路由的挂钩之前运行。问题似乎是该功能根本没有在我的/挑战路线上运行。我明白了。所以,即使你在钩子函数中放了
console.log
,它也不会被触发?我也不是最擅长看咖啡剧本的。是的!测试并发现它没有运行。回答更新-您还需要向我们展示您是如何定义路由的。我认为这是由于路由具有数据参数。我在其他地方使用OnBefore钩子,它是一个静态url,比如“admin”,这很好。在本例中,只有:['challenge/:_id'],函数将不会运行。是的,这适用于所有路由。我上面的代码将在特定路由的挂钩之前运行。问题似乎是该功能根本没有在我的/挑战路线上运行。我明白了。所以,即使你在钩子函数中放了
console.log
,它也不会被触发?我也不是最擅长看咖啡剧本的。是的!测试并发现它没有运行。回答更新-您还需要向我们展示您是如何定义路由的。我认为这是由于路由具有数据参数。我在其他地方使用OnBefore钩子,它是一个静态url,比如“admin”,这很好。在本例中,只有:['challenge/:_id'],函数将不会运行。是的,这适用于所有路由。我上面的代码将在特定路由的挂钩之前运行。问题似乎是该功能根本没有在我的/挑战路线上运行。我明白了。所以,即使你在钩子函数中放了
console.log
,它也不会被触发?我也不是最擅长看咖啡剧本的。是的!测试并发现它没有运行。回答更新-您还需要向我们展示您是如何定义路由的。我认为这是由于路由具有数据参数。我在其他地方使用OnBefore钩子,它是一个静态url,比如“admin”,这很好。在本例中,只有:['challenge/:_id'],函数将不会运行。是的,这适用于所有路由。我上面的代码将在特定路由的挂钩之前运行。问题似乎是该功能根本没有在我的/挑战路线上运行。我明白了。所以,即使你在钩子函数中放了
console.log
,它也不会被触发?我也不是最擅长看咖啡剧本的。是的!测试并发现它没有运行。回答更新-您还需要向我们展示您是如何定义路由的。我认为这是由于路由具有数据参数。我在其他地方使用OnBefore钩子,它是一个静态url,比如“admin”,这很好。在本例中,只有:['challenge/:_id'],函数将不会运行。注意:我只有像'admin'这样的路由可以与OnBefore钩子一起工作,但在本例中,没有运气。我认为URL有参数是个问题。注意:我只有像“admin”这样的路由可以很好地使用OnBefore钩子,但是在这种情况下,没有luc