gpt4 book ai didi

javascript - meteor :创建帐户之前,请检查Meteor.users集合中不存在电子邮件

转载 作者:行者123 更新时间:2023-12-02 06:16:31 25 4
gpt4 key购买 nike

我有一个表格,用户可以在其中加入自己的电子邮件地址和密码。这样就创建了一个帐户,但是我现在想进一步开发它。

client.js:

Template.joinForm.events({
'submit .form-join': function(e, t) {
e.preventDefault();
var email = t.find('#email').value,
password = t.find('#password').value,
username = Random.id(),
array = [],
profile = {
nameOfArray: array
};
Accounts.createUser({
email: email,
username: username,
password: password,
profile: profile
}, function(error) {
if (error) {
alert(error);
} else {
Router.go('/');
}
});
}
});

创建用户帐户之前,您如何:
  • 检查joinForm中的email变量是否在Meteor.users集合中不存在。在服务器上处理这个?
  • 如果email存在,那么拒绝用户创建吗?

  • 我已经看到了新功能,并且想知道是否可以使用此 http://docs.meteor.com/#/full/accounts_validatenewuser
    Accounts.validateNewUser(function (user) {
    // pseudo if statement code
    if (email not exist) {
    // 1. create the user account and then
    Accounts.sendVerificationEmail(userId, [email])
    } else {
    throw new Meteor.Error(403, "email address is already registered");
    }
    });

    谢谢您阅读此篇。

    我不清楚是使用 Accounts.createUser还是 Accounts.onCreateUser,哪个代码应该在客户端上,哪个应该在服务器上。我的目的是安全地建立帐户,因此,在此过程中,请从控制台拒绝任何其他修改权限。

    最佳答案

    如果允许创建帐户,即通过nameOfArray函数,则现在在服务器上创建了多余的空数组validateNewUser。当然,您可以添加更多验证检查,例如密码长度。

    client.js:

    Template.joinForm.events({
    'submit .form-join': function(e, t) {
    e.preventDefault();
    var email = t.find('#email').value,
    password = t.find('#password').value,
    username = Random.id();
    Accounts.createUser({
    email: email,
    username: username,
    password: password,
    profile: profile
    }, function(error) {
    if (error) {
    alert(error.reason);
    } else {
    Router.go('/');
    }
    });
    }
    });

    server.js:
    Accounts.onCreateUser(function(options, user) {
    var newEmail = user.emails[0].address;
    console.log(newEmail);
    var emailAlreadyExist = Meteor.users
    .find({"emails.address": newEmail}, {limit: 1})
    .count() > 0;
    console.log(emailAlreadyExist + ' already exists');
    if (emailAlreadyExist === true) {
    throw new Meteor.Error(403, "email already registered");
    } else {
    profile = options.profile;
    profile.nameOfArray = [];
    user.profile = profile;
    return user;
    }
    });

    关于javascript - meteor :创建帐户之前,请检查Meteor.users集合中不存在电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29253983/

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