Meteor在使用Accounts.onCreateUser()时删除密码数据
我使用{>loginButtons}模板和帐户密码创建了一个新用户,并成功登录,但当我注销并尝试使用我设置的密码重新登录时,出现了“用户未设置密码”错误 我的服务器文件夹中的accountsServer.js中有以下代码:Meteor在使用Accounts.onCreateUser()时删除密码数据,meteor,meteor-accounts,Meteor,Meteor Accounts,我使用{>loginButtons}模板和帐户密码创建了一个新用户,并成功登录,但当我注销并尝试使用我设置的密码重新登录时,出现了“用户未设置密码”错误 我的服务器文件夹中的accountsServer.js中有以下代码: Accounts.onCreateUser(function (user, options) { someCollection.insert({ name: user.username, elo: 1500, }); return user; })
Accounts.onCreateUser(function (user, options) {
someCollection.insert({
name: user.username,
elo: 1500,
});
return user;
});
我在我的客户端文件夹中的accountsClient.js中设置了一个USERNAME\u ONLY配置选项:
Accounts.ui.config({
passwordSignupFields: "USERNAME_ONLY"
});
有人能帮我吗?当我在Accounts.onCreateUser()函数中完全注释掉代码时,错误消失了,因此我认为这是问题的根源,但我不确定是什么原因造成的。可能是因为:
默认的“创建用户”功能只是将options.profile
复制到
新的用户文档。调用onCreateUser将覆盖默认值
钩子。这只能调用一次
因此,用户创建不再在注册之前复制用户中的选项此外,您的参数选项
和用户
似乎颠倒了强>
您可以通过这种方式重新添加此逻辑:
Accounts.onCreateUser(function (options, user) {
someCollection.insert({
name: user.username,
elo: 1500,
});
if (options.profile)
user.profile = options.profile;
return user;
});
虽然这句话是正确的,但我认为关于简介的建议与问题无关。
username
字段不在配置文件中,密码被散列并存储在services.password.bcrypt
中。将问题中的选项
和用户
倒置肯定会导致问题。someCollection中的插入可能会失败并导致异常。因此,将不会创建用户。我的问题是,用户是否存在于用户集合中?谢谢,这正是我的问题