在新的Meteor auth分支中,如何创建用户服务器端?
我看到如何通过调用
创建客户端[Client] Meteor.createUser(options, extra, callback)
但是假设我想在启动时创建一个Meteor用户集合记录?
例如,启动/引导应用程序期间的管理员帐户?
由于 吊杆
答案 0 :(得分:21)
在较新版本的流星使用
Accounts.createUser({
username: username,
email : email,
password : password,
profile : {
//publicly visible fields like firstname goes here
}
});
注意:自动生成密码哈希
旧版流星使用:
1 - 注意:您是否已经安装了包?
在某些版本的流星上你不能像Steeve建议的那样调用SRP密码盐生成器,所以试试这个:
2 - 做Meteor.users.insert()
e.g。
var newUserId =
Meteor.users.insert({
emails: ['peter@jones.com'],
profile : { fullname : 'peter' }
});
注意:用户必须拥有EITHER用户名或电子邮件地址。我在这个例子中使用了电子邮件。
3 - 最后设置新创建的帐户的密码。
Accounts.setPassword(newUserId, 'newPassword');
答案 1 :(得分:8)
目前这已经在流星核心谷歌小组中提出过。
Meteor.users.insert({username: 'foo', emails: ['bar@example.com'], name: 'baz', services: {password: {srp: Meteor._srp.generateVerifier('password')}}});
有效。我在启动/启动过程中测试了它。
我不认为这是永久或长期的答案,因为我相信auth分支仍然有很大的变化,我想Meteor背后的团队将为它提供某种功能。
所以,不要将此视为长期答案。
吊杆
答案 2 :(得分:8)
现在可能是一个众所周知的事实,但为了完成这个 - 在auth
分支上有一个新的服务器API。来自docs on auth:
“[Server] Meteor.createUser(options,extra) - 创建用户和 向该用户发送包含选择其初始密码的链接的电子邮件 并完成他们的帐户注册
选项哈希包含:电子邮件(必填),用户名(可选) extra:用户对象的额外字段(例如名称等)。 “
请注意,API可能会发生变化,因为它尚未在主分支上。
答案 3 :(得分:2)
目前,我相信你做不到。运行
Meteor.call('createUser', {username: "foo", password: "bar"});
接近,但createUser
中passwords_server.js
的实施在成功时调用this.setUserId
,并且除非我们在客户端,否则无法在服务器上调用setUserId
- 启动方法调用(在livedata_server.js
中搜索“无法在服务器启动的方法调用上调用setUserId”。
这似乎值得支持。也许记录用户的createUser
的最后三行应该由方法的新布尔login
选项控制?然后你可以使用
Meteor.call('createUser', {username: "foo", password: "bar", login: false});
在服务器引导程序代码中。
答案 4 :(得分:1)
我已经确认我的server / seeds.js文件中的以下代码适用于最新版本的Meteor(版本0.8.1.1)
if (Meteor.users.find().count() === 0) {
seedUserId = Accounts.createUser({
email: 'f@oo.com',
password: '123456'
});
}
server
的目录(或文件夹)意味着我正在服务器上运行代码。文件名seeds.js
完全是任意的。
official documentation现在描述了在客户端上运行时和在服务器上运行时Accounts.createUser()
的行为。
答案 5 :(得分:1)
从服务器端创建用户
// Server method
Meteor.methods({
register: function(data) {
try {
console.log("Register User");
console.log(data);
user = Accounts.createUser({
username: data.email,
email: data.email,
password: data.password,
profile: {
name: data.email,
createdOn: new Date(),
IsInternal: 0
}
});
return {
"userId": user
};
} catch (e) {
// IF ALREADY EXSIST THROW EXPECTION 403
throw e;
}
}
});
// Client call method
Meteor.call('register',{email: "vxxxxx@xxxx.com",password: "123456"}, function(error, result){
if(result){
console.log(result)
}
if(error){
console.log(result)
}
});
答案 6 :(得分:0)
Meteor版本1.1.0.2(服务器端)的工作coffeescript示例:
userId = Accounts.createUser
username: 'user'
email: 'user@company.com'
password: 'password'
profile:
name: 'user name'
user = Meteor.users.findOne userId
我在这个API上花费了一段时间才得到“用户已经存在' 1}}中将profiles.name添加到工作代码中的异常,异常消失了。