如何在流星中再次询问密码?

时间:2015-06-16 15:50:03

标签: security meteor meteor-accounts

当用户尝试更改重要设置时,许多网站会再次要求输入密码(即使他们已经登录)。

我如何通过Meteor实现这一目标?

1 个答案:

答案 0 :(得分:1)

Accounts现在提供了一种方便的Accounts._checkPassword方法(现在已经有一段时间了)。它只适用于服务器端,但是David Weldon只为你要问的内容编写了一个很好的教程:

meteor: check a user's password

为方便起见,以下是代码示例。我删除了加密部分,以降低复杂性。 (You should use SSL rather than rely on client-side encryption anyway,但这是另一个故事)

在客户端,我们捕获密码输入事件并调用自定义服务器方法:

Template.userAccount.events({
  'click #check-password': function() {
    var password = $('#password').val();
    Meteor.call('checkPassword', password, function(err, result) {
      if (result) {
        console.log('the passwords match!');
      }
    });
  }
});

然后在服务器端,这是为调用_checkPassword和回答客户端而定义的方法:

Meteor.methods({
  checkPassword: function(password) {
    check(password, String);
    if (this.userId) {
      var user = Meteor.user();
      var result = Accounts._checkPassword(user, password);
      return result.error == null;
    } else {
      return false;
    }
  }
});