gpt4 book ai didi

javascript - 更新 MeteorJS 帐户密码插件

转载 作者:行者123 更新时间:2023-11-30 16:30:57 25 4
gpt4 key购买 nike

我目前正在使用通过命令安装的插件“accounts-password”开发个人资料页面

meteor add accounts-password

我已经运行了程序等等,并且能够添加数据;但是,当我尝试使用

在浏览器上调用或显示数据时
{{ currentUser.email }}

{{ currentUser.password }}

它不显示,但是当我调用时

{{ currentUser.username }}

它工作得很好。我试图通过 find().fetch(); 访问数据库;这就是我所看到的。

id: "GP26SF2F8jmpqQuvT"
emails: Array[1]
0: Object
address: "testing@gmail.com"
verified: false
__proto__: Object
length: 1
__proto__: Array[0]
username: "testing"
__proto__: Object

根据安排,我应该将电子邮件称为

{{ currentUser.emails.0.address }}

?我也没有在数据中看到密码,有没有办法找回它?实际上,如果用户想要更改密码或电子邮件地址,我的目标是更新 Meteor.users。谢谢。

最佳答案

accounts-password 默认不发布文档的 password 字段。这是意料之中的 - 出于安全原因!

关于电子邮件:accounts 包允许应用程序向用户添加多个电子邮件。这就是为什么会有一系列电子邮件。

而不是做

{{ currentUser.emails.0.address }}

您可以做的是向模板添加一个助手:

Template.myTemplate.helpers({
email: function(){
return Meteor.user().emails[0].address;
}
});

然后你就可以在模板中使用它了:

{{ email }}

Actually my aim here to update the Meteor.users if user wants to change password or email address. Thanks.

我会说几乎没有理由将用户密码发布给客户端。这是一个巨大的安全风险。 accounts-password 包已经处理了常见的用例,所以你可以只使用 Accounts.changePassword()在客户端上允许用户更改他们的密码。

如果您想让用户更改他们的电子邮件,您需要做的是使用 Method .一个方法可以被客户端调用,但是代码是在服务端执行的。执行后,服务器返回响应给客户端。有点像 HTTP 的工作方式。

在这种情况下,客户端可以调用名为 changeEmail 的方法,该方法会尝试更改用户的电子邮件。如果所有检查都通过等,服务器会更改用户的电子邮件并返回响应,例如“成功”,否则返回“失败”。代码可能如下所示:

if(Meteor.isClient){
Meteor.call('changeEmail', newEmail, function(error, response){
if(error){
console.error(error);
} else {
console.log(response);
}
});
}

if(Meteor.isServer){
Meteor.methods({
changeEmail: function(newEmail){
Accounts.addEmail(this.userId, newEmail, false);
var userEmails = Meteor.users.findOne(this.userId, {fields: {emails: 1}}).emails;
if(userEmails.length > 1){
Accounts.removeEmail(this.userId, userEmails[0].address);
Accounts.sendVerificationEmail(this.userId, newEmail);
return "success";
} else {
throw new Meteor.Error('fail', 'email not correct!');
}
}
});
}

如果您不熟悉方法,可以阅读 this Meteor 或 this 的教程文章。此外,我的代码可能无法 100% 发挥作用,这只是一个示例。

关于javascript - 更新 MeteorJS 帐户密码插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33327696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com