Javascript 验证Meteor中的用户密码
用户可以在我的应用程序中执行一些不可逆转的操作。为了增加安全级别,我想验证执行此类操作的人实际上是登录用户。我怎样才能做到呢Javascript 验证Meteor中的用户密码,javascript,passwords,meteor,user-accounts,meteorite,Javascript,Passwords,Meteor,User Accounts,Meteorite,用户可以在我的应用程序中执行一些不可逆转的操作。为了增加安全级别,我想验证执行此类操作的人实际上是登录用户。我怎样才能做到呢 对于有密码的用户,我希望有一个提示,要求再次输入用户密码。我以后如何验证此密码,而不通过网络发送 通过外部服务登录的用户是否可以执行类似操作?如果是,如何实现 我以前没有这样做过,但我认为您的服务器上需要类似的东西 Accounts.registerLoginHandler(function(loginRequest) { console.log(log
- 对于有密码的用户,我希望有一个提示,要求再次输入用户密码。我以后如何验证此密码,而不通过网络发送
- 通过外部服务登录的用户是否可以执行类似操作?如果是,如何实现
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!');
}
});
}
});
//以某种方式获取用户名和密码
var loginRequest={用户名:用户名,密码:密码};
Accounts.calllogin方法({
方法参数:[登录请求]
});
我在github上有一个不同用途的项目,但您可以了解它的结构:
希望这有帮助,我可以帮助回答第一个问题。在撰写本文时,meteor没有
checkPassword
方法,但您可以这样做:
在客户端,我假设您有一个表单,其中有一个名为password
的输入和一个名为checkpassword
的按钮。事件代码可能如下所示:
// FETCH THE USERNAME AND PASSWORD SOMEHOW
var loginRequest = {username: username, password: password};
Accounts.callLoginMethod({
methodArguments: [loginRequest]
});
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;
}
}
});
有关更多详细信息,请参阅我的。我会尽最大努力使它保持最新。您需要一个安全系统。从这里开始:这完全无关。我已经安装了一个可以工作的应用程序,上面安装了帐户密码。我不想创建一个完整的安全系统,我只想验证已经登录的用户。我想使用它,但由于它依赖于未记录的内部,这让我有点不安。你是在生产应用程序中使用它吗?我是在生产应用程序中使用它,你对此感到不安是对的-我当然会。我现在正在尝试它,我得到一个“TypeError:无法读取未定义的属性'Client'。它看起来像Meteor。_srp在最新的Meteor中未定义:(感谢您不断更新此答案,@David。我希望最终我们能够找到一种独立于版本的方法来完成此操作。@David Eldon它不起作用(版本1.4)。尽管当前密码正确,但始终使用不正确的密码