在新的 Meteor auth 分支中,如何创建用户服务器端?
我看到如何通过调用来创建它们的客户端
[Client] Meteor.createUser(options, extra, callback)
但是假设我想在启动时创建一个 Meteor 用户收藏记录?
例如,应用程序启动/引导期间的管理员帐户?
谢谢斯蒂夫
在新的 Meteor auth 分支中,如何创建用户服务器端?
我看到如何通过调用来创建它们的客户端
[Client] Meteor.createUser(options, extra, callback)
但是假设我想在启动时创建一个 Meteor 用户收藏记录?
例如,应用程序启动/引导期间的管理员帐户?
谢谢斯蒂夫
在流星使用的较新版本上
Accounts.createUser({
username: username,
email : email,
password : password,
profile : {
//publicly visible fields like firstname goes here
}
});
注意:密码哈希是自动生成的
在旧版本的流星上使用:
1 - 注意:您是否安装了所需的软件包?
在某些版本的流星上,你不能像 Steeve 建议的那样调用 SRP 密码盐生成器,所以试试这个:
2 - 做 Meteor.users.insert()
例如
var newUserId =
Meteor.users.insert({
emails: ['peter@jones.com'],
profile : { fullname : 'peter' }
});
注意:用户必须拥有用户名或电子邮件地址。我在这个例子中使用了电子邮件。
3 - 最后为新创建的帐户设置密码。
Accounts.setPassword(newUserId, 'newPassword');
目前,这已在meteor-core google group 中提出。
Meteor.users.insert({username: 'foo', emails: ['bar@example.com'], name: 'baz', services: {password: {srp: Meteor._srp.generateVerifier('password')}}});
有用。我在启动/引导带期间对其进行了测试。
我不会认为这是永久或长期的答案,因为我相信 auth 分支仍处于很大程度的变化中,我想 Meteor 背后的团队将为它提供某种功能。
所以,不要依赖这个作为一个长期的答案。
斯蒂夫
现在可能这是一个众所周知的事实,但为了完成这一点 - 有一个新的服务器 API 可以在auth
分支上执行此操作。从关于 auth 的文档:
" [Server] Meteor.createUser(options, extra) - 创建一个用户并向该用户发送一封电子邮件,其中包含一个链接以选择他们的初始密码并完成他们的帐户注册
options 一个哈希值,包含:email(强制)、username(可选) extra:用户对象的额外字段(例如名称等)。"
请注意,API 可能会发生变化,因为它还没有在 master 分支上。
目前,我相信你不能。跑步
Meteor.call('createUser', {username: "foo", password: "bar"});
接近了,但是createUser
inpasswords_server.js
调用this.setUserId
成功时的实现,并且setUserId
不能在服务器上调用,除非我们在客户端启动的方法调用中(在livedata_server.js
.
这似乎是值得支持的事情。也许用户登录的最后三行createUser
应该由login
该方法的新布尔选项控制?然后你可以使用
Meteor.call('createUser', {username: "foo", password: "bar", login: false});
在服务器引导代码中。
我已经确认我的 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
是完全任意的。
官方文档现在描述了Accounts.createUser()
在客户端上运行和在服务器上运行时的行为。
从服务器端创建用户
// 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)
}
});
Meteor 版本 1.1.0.2(服务器端)的工作咖啡脚本示例:
userId = Accounts.createUser
username: 'user'
email: 'user@company.com'
password: 'password'
profile:
name: 'user name'
user = Meteor.users.findOne userId
options
在将profiles.name添加到异常消失之前,我为这个API在工作代码中获取“用户已存在”异常而苦苦挣扎了一段时间。