如果用户在发布之前没有设置密码,请重定向用户

时间:2016-03-03 15:11:49

标签: javascript meteor

我的网站中有一个界面,用户可以为其他用户创建“无人认领”的订单并向他们发送邀请。邀请链接的格式为/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
  • 如果用户没有设置密码,我想将它们重定向到重置密码页面。

这可以通过流星出版物来实现吗?

1 个答案:

答案 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而不是订阅。