我的网站中有一个界面,用户可以为其他用户创建“无人认领”的订单并向他们发送邀请。邀请链接的格式为/enrollment/orders/:_id
,其中_id
是订单的ID。
一个问题是,这可以多次发送。第一次,被邀请的用户可能没有设置密码。
Meteor.publish('enrolled_order', function (token) {
// if user has their password reset, token will also be set for user's account
return Orders.find({
'enrollment.token': token
});
});
以下是问题:在此发布期间,我想检查用户记录的某些方面,并采取不同的操作而不是发布它。为了安全起见,我认为这需要在服务器上完成才能正常工作。
this.userId
,我想将它们发送到login
。这可以通过流星出版物来实现吗?
答案 0 :(得分:0)
我认为您需要在路由器中执行此操作。如果您正在使用Iron Router,则可以使用onBeforeAction检查用户是否已登录:
Router.route('/enrollment/orders/:_id', {
subscriptions: function() {
return Meteor.subscribe('enrolled_order', this.params._id);
},
onBeforeAction: function() {
if( ! Meteor.userId() ) {
Router.go( 'loginTemplateName' );
}
}
});
您不想直接将哈希密码返回给客户端,因此设置一个变量来说明密码是否存在可能是最好的方法吗?
我无法记住onBeforeAction是否在waitOn之前发生,但你可能能够使用waitOn而不是订阅。