Meteor Iron Router OnBefore钩子,参数URL不调用函数
我希望使用iron router限制对页面的访问,但是before函数似乎没有运行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
# 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