用户可以在我的应用中执行一些不可逆转的操作.为了增加安全级别,我想验证执行此类操作的人员实际上是登录用户.我怎样才能实现它?
>对于有密码的用户,我想要一个要求再次输入用户密码的提示.我以后如何验证此密码,而无需通过网络发送?
>对于通过外部服务登录的用户,是否可以执行类似操作?如果是的话,如何实现呢?
解决方法
我可以帮助解决第一个问题.在撰写本文时,meteor没有checkPassword方法,但是你可以这样做:
在客户端上,我将假设您有一个带有输入密码的表单和一个名为check-password的按钮.事件代码可能如下所示:
Template.userAccount.events({ 'click #check-password': function() { var digest = Package.sha.SHA256($('#password').val()); Meteor.call('checkPassword',digest,function(err,result) { if (result) { console.log('the passwords match!'); } }); } });
然后在服务器上,我们可以像这样实现checkPassword方法:
Meteor.methods({ checkPassword: function(digest) { check(digest,String); if (this.userId) { var user = Meteor.user(); var password = {digest: digest,algorithm: 'sha-256'}; var result = Accounts._checkPassword(user,password); return result.error == null; } else { return false; } } });
有关详细信息,请参阅我的blog post.我会尽力保持最新.